Flutter学习笔记(31)--异步更新UI
如需转载,请注明出处:Flutter学习笔记(31)--异步更新UI
大家都知道,子线程不能操作UI控件,在我们Android的日常开发中,经常会遇到网络请求数据通过线程间通信,将数据发送到UI线程中去更新UI,在Flutter中是如何处理异步更新UI的呢?
今天我们介绍一下FutureBuilder。
const FutureBuilder({ Key key, this.future, this.initialData, @required this.builder, })
构造参数说明:
feture:接收一个Future对象,用于处理耗时操作。
initialData:默认数据。
builder:widget构建器,会在future的不同阶段多次调用。构建器签名如下:
Widget Function(BuildContext context, AsyncSnapshot<T> snapshot);
模拟一个网络请求数据回来后更新UI的场景,先看下整体的示例
import 'dart:async'; import 'package:flutter/material.dart'; class FutureBuilderDemo extends StatefulWidget { @override State<StatefulWidget> createState() { return new _FutureBuilderDemoState(); } } class _FutureBuilderDemoState extends State { @override Widget build(BuildContext context) { return MaterialApp( title: 'FutureBuilderDemo', home: new Scaffold( appBar: AppBar( title: new Text('FutureBuilderDemo'), ), body: new Center( child: FutureBuilder<String>( future: mockNetworkData(), initialData: '我是默认的数据', builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return new Text('erro'); } else { return new Text(snapshot.data); } }, ), ), ), ); } Future<String> mockNetworkData() async { return Future.delayed(Duration(seconds: 11), () => '我是网络请求的数据'); } }
snapshot:会包含当前异步任务的状态信息及结果信息 ,比如我们可以通过snapshot.connectionState
获取异步任务的状态信息、通过snapshot.hasError
判断异步任务是否有错误等等
以上就是今天下拉刷新和上拉加载的全部内容了,如果有错误的地方或者有任何疑问,欢迎留言!!!
标签:
Flutter学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2018-06-12 weex常用属性梳理