jjzjj

asynchronous - Flutter Redux snackbar

coder 2023-05-09 原文

我在 flutter 代码中使用 redux。我有一个按钮,按下时会发送一个 Action 来调用异步 API(在我的中间件中)。我想要做的是当 api 调用执行并返回响应时,我想显示 snackbar ,说明它已成功更新数据或错误消息。我的问题是如何通过调度一个 Action 来显示它。或者有没有更好的方法在 redux 中做到这一点?

最佳答案

免责声明: 这不是在 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")));
}

你的 Redux 中间件:

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

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

    next(action);
}

MyAction 类:

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

   VoidCallback onCompeleted;
   ErrorCallback onError;
}

其中一些可以通过 future 来完成,但这很简单。

关于asynchronous - Flutter Redux snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887690/

有关asynchronous - Flutter Redux snackbar的更多相关文章

  1. ruby - Delayed_job : how to use handle_asynchronously to work with a function? - 2

    函数是:defcreateuser(name,pass,time)putsname,pass,timeend我试试:handle_asynchronously:createuser("a","b","c")得到一个错误:语法错误,意外'(',期待keyword_end谢谢。===编辑===日本的用户数据库和北京的网络服务器。所以我用这种方式来创建用户。defcreateuser(name,pass,time)Net::HTTP.get(URI.parse("http://www.example.net/builduser.php?hao=#{name}&mi=#{pass}&da=#{

  2. javascript - 错误 : It isn't possible to write into a document from an asynchronously-loaded external script - 2

    我试图在Rails4网站上加载广告并不断收到以下错误onejs?MarketPlace=US&adInstanceId=xxxxxxxx&storeId=xxxxxxx:1Failedtoexecute'write'on'Document':Itisn'tpossibletowriteintoadocumentfromanasynchronously-loadedexternalscriptunlessitisexplicitlyopened.如果我刷新页面,广告就会正常加载。这是来自亚马逊的广告代码,它位于show.html.erb文件中。如果我使用带iframe代码的亚马逊广告没有

  3. javascript - Vue 2.0 : Passing asynchronous data to child component - 2

    我有一个父Vue组件,它通过prop将数据传递给它的子组件,但数据是异步可用的,因此我的子组件初始化为未定义的值。在数据可用之前,我该怎么做才能阻止初始化?父级:varemployees=newVue({el:'#employees',data:{...},methods:{fetch:function(model,args=null){leturl="/"+model+".json"console.log(url);$.ajax({url:url,success:((res)=>{console.log(res)this[model]=res;this.isLoading=false

  4. javascript - 测试 : You will need to wrap any code with asynchronous side-effects in a run 时出现 Ember 错误 - 2

    我们已经有一个应用程序正在运行,只是为了CI的目的向它添加测试用例。我们有一个小代码来尝试登录过程并检查在可能的登录状态(如成功、失败、无效帐户帐户被锁定等)之后发生的情况。所以我尝试了以下代码。visit('/login').fillIn('#identification',"testuser").fillIn('#password',"testpass").click('input[type="submit"]')andThen(function(){ok(!exists('button:contains(signin)'),'3.Loginbuttonisnotdisplayed

  5. javascript - JS : Get inner function arguments in asynchronous functions and execute callback - 2

    我尝试编写返回异步函数的所有结果的函数,并执行一个回调,将其插入数组并记录每个异步函数的结果。作为一个服务员,当所有的菜都吃完了就端上来。我不明白如何获得应该作为结果返回的子参数。任务代码和我不工作的解决方案如下:任务:vardishOne=function(child){setTimeout(function(){child('soup');},1000);};vardishTwo=function(child){setTimeout(function(){child('dessert');},1500);};waiter([dishOne,dishTwo],function(res

  6. asynchronous - 如何有效地解码 gobs 并等待更多通过 tcp 连接到达 - 2

    我想为游戏应用程序建立TCP连接。时间效率很重要。我想有效地接收许多对象。由于负载的原因,提高CPU效率也很重要。到目前为止,我可以确保每次使用go的net库调用连接时都会调用handleConnection。但是,一旦创建了连接,我就必须进行轮询(一遍又一遍地检查以查看连接上是否已准备好新数据)。这似乎效率低下。如果新数据不必要地占用CPU,我不想运行该检查以查看新数据是否已准备就绪。我一直在寻找诸如以下两个选项之类的东西,但没有找到我要找的东西。(1)执行以某种方式阻塞(不占用CPU)的读取操作,然后在连接流上准备好新内容时解除阻塞。我找不到那个。(2)采用异步方法,当新数据到达连

  7. asynchronous - 缓冲 channel 的理想大小和工作人员数量是多少? - 2

    我正在尝试构建一个异步编解码器。我已经实现了一个可以访问缓冲作业channel的作业调度器varJobChannelchanJob=make(chanJob,100000)调度员将worker数量作为输入并向他们分配工作funcStartDispacher(numberOfWorkersint){//startworkerswg:=&sync.WaitGroup{}wg.Add(numberOfWorkers)fori:=int(1);i我的主要功能启动调度程序并不断给它工作(在本例中为200000个工作)workDispatcher.StartDispacher(2*runtime.

  8. asynchronous - 使用 goroutines WaitingGroup 时随机发生错误 - 2

    我有一个包含两个goroutine的处理程序。前端每10秒执行一次处理程序。调用后,goroutine会向外部API发送GEThttp请求。出于某种原因,有时(不经常)我在任何goroutines中随机出现以下错误(似乎外部API拒绝了请求)。状态码:408panic:readtcp192.168.1.106:62598->80.243.175.58:443:wsarecv:Anexistingconnectionwasforciblyclosedbytheremotehost.goroutine8280[running]:Monitoring/monitoring-v2-goAPI/

  9. asynchronous - 具有异步 goroutines 的 Kafka 消费者 - 2

    我正在为我的消费者使用sarama(https://github.com/Shopify/sarama/)和Kafka0.8.0。这是我的代码的样子:consumerLoop:for{select{caseevent:=我正在使用缓冲channel(c.sem)来控制一次可以运行多少个processJobgoroutine。这就是我控制消费者的并发/速度的方式。我在使用这种方法时遇到的问题是,如果我需要更改并发性,我必须关闭使用者并重新启动它(channel缓冲区大小是一个命令行标志)。我记录了已处理的偏移量,我必须查看我的日志以确定处理了哪些偏移量以及我希望消费者从哪里恢复。我想要一

  10. asynchronous - 多个函数的数据处理是异步的 - 2

    我有通过http接收的数据,这些数据需要由两个不同的函数处理。重要的是它们由每个函数按顺序处理。在文件中,例如:1,2,3,4,5。而数据库也记录了1,2,3,4,5。作为fifo模型。现在我有这样一个问题......我的数据一直在运行,有时数据库可以满足我更新数据的要求很长时间,因此我无法及时更新文件。在可能的情况下将数据添加到文件或数据库对我来说很重要。我可以使用缓冲channel,但我不知道队列中有多少数据可以等待处理,我不想表明缓冲区的大小肯定很大。我尝试向NewData函数添​​加更多goroutine,但在那种情况下,我的数据不是按顺序写入的。此代码显示了问题。packag

随机推荐