首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter onPressed异步函数不等待cubit/存储库的等待函数

Flutter中的onPressed异步函数不等待cubit/存储库的等待函数是因为onPressed是一个回调函数,它不会等待异步操作完成。这意味着在调用cubit/存储库的等待函数时,onPressed函数会继续执行,而不会等待等待函数的结果返回。

为了解决这个问题,可以使用async/await关键字来确保onPressed函数等待cubit/存储库的等待函数完成。具体步骤如下:

  1. 将onPressed函数标记为async,表示它是一个异步函数。
  2. 在调用cubit/存储库的等待函数之前,使用await关键字来等待该函数的结果返回。
  3. 确保包含onPressed函数的外部函数也是异步函数,以便能够使用await关键字。

以下是一个示例代码:

代码语言:txt
复制
onPressed: () async {
  // 其他代码...

  // 等待cubit/存储库的等待函数完成
  await cubit.waitFunction();

  // 继续执行其他代码...
}

在这个示例中,onPressed函数使用了async关键字标记为异步函数,并使用await关键字等待cubit.waitFunction()函数的结果返回。这样,onPressed函数会等待cubit.waitFunction()函数完成后再继续执行其他代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

flutter_bloc使用解析---骚年,你还在手搭bloc吗!

flutter_bloc: ^6.1.1 #状态管理框架 equatable: ^1.2.3 #增强组件相等性判断 看看flutter_bloc都推到6.0了,别再用StreamController...,这边上图了,大家点击下面的链接,可以直接体验Cubit模式写计时器 实现效果:点我体验实际效果 实现 实现很简单,三个文件就搞定,看下流程:state -> cubit -> view state...它应用于需要在每次状态更改时发生一次功能,例如导航,显示a SnackBar,显示aDialog等。 listener`与in和函数不同,每次状态更改(****包括初始状态)仅被调用一次。...小部件,它通过为其子节点提供存储RepositoryProvider.of(context)。...它用作依赖项注入(DI)小部件,以便可以将存储单个实例提供给子树中多个小部件。BlocProvider应该用于提供块,而RepositoryProvider只能用于存储

5.1K41

Dart 异步编程之 Isolate 和事件循环。

Dart 异步编程之 Isolate 和事件循环。 尽管 Dart 是个单线程任务,但它提供 Future、Stream、后台任务以及其他特性用于编写现代异步程序以及响应式程序(Flutter)。...这非常适合 Flutter 应用,它时常要迅速地构建和销毁 Widget 树。 Event loops 现在你已经了解 Isolate 了,再来看看事件循环是如何让异步代码变成可能吧。...; } }); }, ) 你运行应用时,Flutter 构建按钮并显示到屏幕,之后应用开始等待。 应用事件循环处于空闲,等待下一个事件。...Flutter 看到这个事件,它渲染系统说 “事件坐标跟 RaisedButton 匹配”,所以 Flutter 执行 onPressed 函数。...onPressed等待点击,而 Future 在等待网络数据,从 Dart 视角,这些都是队列中事件。 这也正是 Dart 中异步代码工作方式。

1.5K50

Flutter--Dart基础语法(四)异步

前言 Flutter 是 Google 开源 UI 工具包,帮助开发者通过一套代码高效构建多平台精美应用,Flutter 开源、免费,拥有宽松开源协议,支持移动、Web、桌面和嵌入式平台。...关于编程语言基本语法无外乎那么些内容,注释、变量、数据类型、运算符、流程控制、函数、类、异常、文件、异步、常用等内容,相信大部分读者都是有一定编程基础,所以本文就简单地进行一个梳理,不做详细讲解...上一篇文章主要是写了Dart语言类和对象、泛型以及使用,本文将接着上一篇文章继续往后写,本文将主要介绍Dart语言中异步。...一个按钮RaisedButton,当发生点击时执行onPressed函数onPressed函数中,我们发送了一个网络请求,请求成功后会执行then中回调函数。...1、当用户发生点击时候,onPressed回调函数被放入事件循环中执行,执行过程中发送了一个网络请求。

1.4K20

Flutter异步实现示例

还是提供了 Futrue 这个 API 来专门来操作各种消息,以及实现基于消息队列异步 Flutter 异步”机制 这里异步是加了引号,可见此异步非真异步,而是假异步。...Flutter 异步 不是开新线程,而是往所属线程 消息队列 中添加任务,当然大家也可以按上文那样自己展开真异步操作 Flutter 对代码分2类: 同步代码和异步代码 同步代码:传统一行行写下来...Future 对象是 Flutter 专门提供,基于消息队列实现异步类,Future 对象会把自身当做一个任务添加到消息队列中去排队执行 Future 对象接受是一个函数,就是要执行任务,用...= await getData(); 记住: Future就是event,很多Flutter内置组件比如前几篇用到Http(http请求控件)get函数、RefreshIndicator(下拉手势刷新控件...)onRefresh函数都是event。

1.3K31

Flutter BLoC 异步通信、BlocBuilder基本使用、BlocProvider初探

中可用于异步通信方案有如下: Provider ( Provider 异步通信、Provider状态管理) ValueNotifier 点击查看详情 Stream: StreamController...使用详情 | StreamBuilder组件结合使用 | StreamBuilder 实现倒计时进度圆圈 EventBus (不考虑使用) Bloc BLoC 异步通信、BlocBuilder...BloC是一种架构模式也是一种编程思想,在Flutter中使用BloC时,首先要引入bloc dependencies: flutter_bloc: ^6.0.6 然后将依赖拉取到本地 flutter...应用程序中入口函数 void main() => runApp(BlocMainApp()); ///应用根布局 class BlocMainApp extends StatelessWidget...= null), super(key: key, cubit: cubit, buildWhen: buildWhen); ... ... } builder 参数为必选参数,

3.2K11

Flutter文本、图片和按钮使用

ImageStream开始异步加载,加载完毕后,更新缓存 最后,通知_ImageState刷新UI 图片展示流程: ImageCache使用LRU缓存更新策略,默认最多存储1000张图片,最大缓存限制...这就对应按钮控件中两个最重要参数: onPressed参数用于设置点击回调,告诉Flutter在按钮被点击时通知我们。...若onPressed参数为空,则按钮会处于禁用状态,不响应用户点击 child参数用于设置按钮内容,告诉Flutter控件应长成啥样,即控制按钮控件基本样式。...Flutter提供多种按钮控件,使用方法类似。控件初始化child参数用于设置按钮长什么样,而onPressed参数则用于设置点击回调。与Text类似,按钮内部也有丰富UI定制接口。...在阅读Flutter SDK中Text、Image、FadeInImage、FloatingActionButton、FlatButton和RaisedButton源码时,可以发现它们build函数中都有一个内部真正承载其视觉功能控件

49620

【源码篇】Flutter Bloc背后思想,一篇纠结文章

view:页面 Cubit模式:该模式划分了三层结构 cubit:逻辑层 state:数据层 view:页面 作者在层次划分上还是很老道,state层是直接写死在框架内部,这层必须要单独分出来;我感觉如果不是被大型项目的克苏鲁代码山坑过...在我看来,这样大名鼎鼎开源,上面这点疙瘩完全可以避免;也许是这种莫名高期待,让我产生了这种落差。。。...BlocProvider或会储存外部传入XxxBloc实例,XxxBloc类必须继承BlocBase BlocProvider存储XxxBloc实例,可以通过BlocProvider.of获取到...,来梳理下 Bloc.observer这个不重要,这是框架内部定义一个类,这边可以忽略掉,不太重要 储存了传入state对象 每次使用emit刷新时候,会将传入state替换之前存储state对象...emit做了一个判断,如果传入state和存储state对象相同,将不执行刷新操作(这就是我在State类里面,加clone方法原因) 初始化了Stream一系列对象 封装了关闭Stream流操作

2.4K41

文本、图片和按钮在Flutter中怎么用

我们先来看看如何使用单一样式文本 Text。 单一样式文本Text初始化,是需要传入要展示字符串。而这个字符串具体展示效果,受构造函数其他参数控制。...这些都是构造函数参数。...在加载网络图片时候,为了提升用户等待体验,我们往往会加入占位图、加载动画等元素,但是默认Image.network方法并不支持这些高级功能,这个时候,FadeInImage控件就派上用场了。...值得注意是,ImageCache使用LRU(Least Recently Used,即最近最少使用)算法来进行缓存更新策略,并且默认最多存储1000张图片。...这就对应着按钮控件中两个最重要参数了: onPressed 参数用于设置点击回调,告诉Flutter在按钮点击时通知我们。如果 onPressed 参数为空,则按钮会处于禁用状态,不响应用户点击。

7.7K20

Flutter进阶篇(7)-- Flutter路由轻量级框架FRouter

今天我查找源码,发现了一个PageStorage这个类,它主要是用于存储状态,不管你有多少页面,都可以保存状态信息。真是太方便了,而且使用起来也是超级简单。...)分析详解 Flutter进阶篇(4)-- FlutterFuture异步详解 Flutter进阶篇(5)-- 使用Flutter创建插件详解并发布到Pub Flutter进阶篇(6)-- PageStorageKey...(四)-- 泛型、异步等有关详解 ---- 最近对路由做了封装,写了一个轻量级框架,让你轻松地使用路由,不再那么麻烦。...,你可以根据需要传入即可,这里逐个演示了。...String类型字段,当然你也可以根据实际需要,给你页面的构造函数参数设置其他参数类型,这里只是以String类做了一个示例。

1.3K10

Flutter lesson 9: Flutter网络(HTTP)请求

Flutter中网络请求有两种,一个是使用Flutter自带网络请求,另一种则是使用第三方HTTP请求插件dio Flutter中自带HTTP请求 如果要使用Flutter自带HTTP请求,需要引入下面两个...Flutter 官网建议我们使用 async/await 来进行处理异步(借鉴了前端中ES7异步处理)。 使用Flutter自带HTTP请求一般包含以下几个步骤: 创建 client。...关于 URL 与 URI 区别,可以HTTP 协议中 URI 和 URL 有什么区别?。 发起请求,等待请求,同时您也可以配置请求headers,body等等。 关闭请求。等待响应。...使用dart:convert可以简单解码和编码JSON。 有关其他JSON文档,请参阅JSON和序列化。 看看最后代码,下面两个都是get,使用了不同方式,第二个还带了参数。...使用 dio 使用 dio 需要修安装 dio 插件,当前我使用是最新版本 2.1.11 dependencies: flutter: sdk: flutter flutter_webview_plugin

2.5K20

Dart 异步

也就是说,在一条执行线上,为了阻碍代码执行,每遇到耗时任务都会被挂起放入任务队列,待执行结束后再按放入顺序依次执行队列上任务,从而达到异步效果。...单线程模型按照代码编写顺序,自上而下运行,这是我们所认知,但是当遇到耗时操作(IO/网络请求)等,会给UI造成卡顿阻塞,那么在Flutter中是怎么解决这个问题呢?...async 描述一个执行异步操作方法 await 表示一直等待异步方法返回结果,才继续往后执行 一般一个async函数会返回一个Future //HTTPget请求返回值为Future<String...)**函数 任务结束完成后,进入这里 **wait()**函数 等待多个异步任务执行完成后,再调用then() **delayed()**函数 延迟任务执行 ⚠️: Future没有执行完成(有任务需要执行...Stream Stream和 Future一样都是Dart中用来做异步操作,官方对其定义为: Widgets + Stream = Reactive Flutter APP Stream作用类似于

1.6K20

Flutter技术与实战(5)

对于异步函数返回 Future 对象,如果调用者决定同步等待,则需要在调用处使用 await 关键字,并且在调用处函数体使用 async 关键字。...Dart 会将调用体函数也视作异步函数,将等待语句上下文放入 Event Queue 中,一旦有了结果,Event Loop 就会把它从 Event Queue 中取出,等待代码继续执行。...然后,进入 func 函数,func 函数调用了异步函数 fetchContent,并使用 await 进行等待,因此我们把 fetchContent、await 语句上下文函数 func 先后放入事件队列...await 与 async 只对调用上下文函数有效,并不向上传递。因此对于这个案例而言,func 是在异步等待。...如果我们想在 main 函数中也同步等待,需要在调用异步函数时也加上 await,在 main 函数也加上 async。

15.7K30

《深入浅出Dart》事件循环和协程机制

异步函数使用 async 关键字来标记,表示这个函数可能包含异步操作。在异步函数中,使用 await 关键字来等待一个 Future 结果。...事件循环处理宏任务,执行相应回调函数,并等待宏任务完成。...异步函数使用 async 关键字来标记,表示这个函数可能包含异步操作。在异步函数中,使用 await 关键字来等待一个 Future 结果。...在异步函数中,我们使用 await 关键字等待 fetchData() 函数结果。在等待期间,协程会暂停执行,并将控制权返回给事件循环。...使用 async/await 语法编写异步函数中,await 表达式会等待一个 Future 完成,并在当前事件循环中微任务阶段恢复执行。

31510

Flutter学习

常用网址 Flutter 开发文档 Flutter实战 Dart 编程语言概览 pub仓库 main函数使用了(=>)符号, 这是Dart中单行函数或方法简写。...它们核心特性是相同,每一帧它们都会重新构建,不同之处在于有状态Widget有一个State对象,它可以跨帧存储状态数据并恢复它。...在Flutter中,因为widget是不可变,所以没有addChild。相反,您可以传入一个函数,该函数返回一个widget给父项,并通过 布尔值控制该widget创建。...例如,RaisedButton有一个onPressed参数 如果Widget不支持事件监听,则可以将该Widget包装到GestureDetector中,并将处理函数传递给onTap参数。...Flutter路由&pop()&Push()全面解析 异步 flutter没有UI线程,也没有子线程。

2.6K20

Flutter 数据持久化存储之Hive

Flutter 数据持久化存储之Hive 前言 正文 一、配置项目 二、UI ① 增加UI ② 显示和删除UI 三、使用Hive ① 初始化Hive ② TypeAdapter自定义对象 ③ 注册TypeAdapter...这种方式适合存储少量简单键值对数据,比如用户偏好设置等。 文件存储: 使用dart:io可以进行文件存储,可以将数据以文件形式存储在设备上。...这种方式适合存储结构化数据,可以使用JSON格式或者其他格式进行数据读写。 SQLite数据: 可以使用sqflite插件在Flutter应用中使用SQLite数据。...SQLite是一种轻量级关系型数据,适合于需要存储结构化数据,并进行高效查询场景。...NoSQL数据: 一些Flutter插件(如moor)也提供了对NoSQL数据支持,比如使用对象数据(如Hive)来存储数据。

16600

Flutter 状态管理之GetX

Flutter 状态管理之GetX 前言 正文 一、创建项目 二、状态组件 三、状态更新UI 四、GetX ① 添加依赖 ② 局部刷新 ③ 全局刷新 五、源码 前言   Flutter使用是声明式UI...同样为了简化原本状态使用,我们会使用Getx。 正文   之前说要写Flutter,一拖就是一年多,有些不好意思。现在都24年了,终于等到你,下面还是按照我们最属于思路来吧。...有时候快捷键生效则你可以手动点击这个闪电按钮,如果也生效就重新安装,总会生效,做开发就要有一颗平常心。...声明式UI基本上都是这种方式,了解了Flutter基本状态更新UI,下面我们再来学习一下GetX这个。...四、GetX GetX是一个基于Flutter状态管理和路由导航解决方案,提供了简单、强大、高性能工具和功能,以简化Flutter应用程序开发过程。

17601

Flutter | 路由管理

return NewRoute(); })); }, ) image.png MaterialPageRoute MaterialPageRoute 是 Material 组件提供组件...方法中,异步执行这个函数,最终将返回值打印出来 如果不了解 async 可查看这篇文章,Dart,随用随查 运行上面的代码,点击 "打开提示页面",效果如下所示 image.png 打印结果 I/...flutter (23778): 路由返回值 我是返回值 需要注意是 ​ 1,参数是通过构造方法传入 ​ 2,如果点击左上角,或者返回按钮进行返回,则页面返回值为 null 命名路由 有名字路由...,给路由起一个名字,就可以通过名字直接打开路由了 路由表 路由表就是一个 map,key 为路由名字,value 是一个 builder 回调函数,用于生成相应路由 widget。...} ); } ); ---- 参考资料: Flutter官网 Flutter 实战

93450

Flutter】StatefulWidget 组件 ( FloatingActionButton 组件 | RefreshIndicator 组件 )

; 显示组件 : child ; FloatingActionButton 构造函数源码 : 在构造函数可选参数中 , 可以查询该组件可设置参数选项 ; class FloatingActionButton...组件 ---- RefreshIndicator 组件常用于下拉刷新操作 ; RefreshIndicator 组件构造函数 : 构造函数可选参数中展示了其可以设置参数 ; class RefreshIndicator..., 当 RefreshIndicator 发生下拉操作时, 回调该方法 ; 异步方法 , 在方法体前添加 async 关键字 ; 该方法主要作用是暂停 500 ms , 然后返回空 ; ///.../flutter Flutter 中文社区 : https://flutter.cn/ Flutter 实用教程 : https://flutter.cn/docs/cookbook Flutter CodeLab...中文网 ( 非官方 , 翻译很好 ) : https://flutterchina.club/ , http://flutter.axuer.com/docs/ Flutter 相关问题 : https

2.6K00

实现Flutter应用中全局导航栏效果

Flutter中常用状态管理器 Provider: Provider是Flutter官方推荐状态管理之一,它使用InheritedWidget实现状态共享,简单易用,适用于中小规模应用。...Riverpod设计理念是基于函数式编程,提供了更好代码组织和测试性。 GetX: GetX是一个全功能Flutter状态管理器,它提供了状态管理、路由管理、依赖注入等多种功能。...,它包含一个_selectedIndex属性用于存储当前选中导航栏项索引,并提供一个selectedIndex方法来更新选中索引。...它允许类在继承自其他类情况下,复用和扩展已有的功能。在Dart和Flutter中,混入是通过使用关键字with来实现,可以将一个或多个混入类与主类进行组合,从而增强主类功能。...Riverpod状态管理器: 优点: 提供了更强大和灵活功能,支持异步数据和延迟加载等特性。 基于函数式编程,提供了更好代码组织和测试性。 适用于复杂应用场景和大型项目。

9410
领券