首页 文章

Flutter Redux SnackBar

提问于
浏览
3

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

1 回答

  • 4

    Disclaimer: 这不是在IDE中编写并运行的代码..它只是一种描述问题解决方案的方法 . 可能有错误 .

    假设您拥有Redux存储并使用async进行API调用 .

    Your page widget:

    ... 
    
    _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")));
    }
    

    Your Redux middleware:

    apiMiddleware(Store<MyState> store, action, NextDispatcher next) {
    
        if(action is SubmitAction) {
            yourAPICall()
                .then((data) => action.onCompleted())
                .catchError((e) => action.onError(error));
        }
    
        next(action);
    }
    

    MyAction class:

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

    其中一些可以通过期货来完成,但这很简单 .

相关问题