首页
学习
活动
专区
工具
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.3K41

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.4K31

    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.3K11

    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函数中都有一个内部真正承载其视觉功能控件

    56620

    【源码篇】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.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.8K30

    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

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

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

    41610

    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)来存储数据。

    31000

    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 实战

    95450

    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.7K00

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

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

    14011

    Flutter 状态管理之GetX

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

    36401
    领券