Flutter Redux SnackBar

Vik*_*kas 4 asynchronous snackbar redux flutter

我在Flutter代码中使用redux。我有一个按钮,按此按钮可以调度一个动作来调用异步API(在我的中间件中)。我想做的是当api调用执行并返回响应时,我想显示小吃栏,说明它是成功更新的数据或错误消息。我的问题是如何通过调度动作来显示小吃栏。还是在redux中有更好的方法呢?

aqw*_*ert 7

免责声明: 这不是用IDE编写并运行的代码。这只是描述问题解决方案的一种方式。可能有错误。

假设您拥有Redux存储,并使用异步进行API调用。

您的页面小部件:

... 

_onSubmit(Store<MyState> store) {
   store.dispatch(new SubmitAction(onCompleted: _onCompleted, onError: _onError))

}

_onCompleted() {
    Scaffold.of(context).showSnackBar(new SnackBar(
       content: new Text("Item Completed")));

}

_onError(error) {
    Scaffold.of(context).showSnackBar(new SnackBar(
       content: new Text("Error Occurred")));
}
Run Code Online (Sandbox Code Playgroud)

您的Redux中间件:

apiMiddleware(Store<MyState> store, action, NextDispatcher next) {

    if(action is SubmitAction) {
        yourAPICall()
            .then((data) => action.onCompleted())
            .catchError((e) => action.onError(error));
    }

    next(action);
}
Run Code Online (Sandbox Code Playgroud)

MyAction类:

typedef void VoidCallback();
typedef void ErrorCallback(error);
class MyAction {
   MyAction({this.onCompleted, this.onError})

   VoidCallback onCompeleted;
   ErrorCallback onError;
}
Run Code Online (Sandbox Code Playgroud)

其中一些可以用期货来完成,但这很简单。

  • 但是Redux提出的架构可以吗? (3认同)