本文从源码角度去阐述并记录笔者学习Flutter异步刷新UI的相关知识点,读完本篇能大体了解一下知识点:Future、Stream、StreamBuilder、Provider&MultiProvider是什么?解决了什么问题?如何用?
Future和Stream是异步事件的数据资源提供者,后两者则是对异步数据进行同步处理的加工者。
- Future
1.是什么?
Future和它的名字一样,代表在未来一段时间内可能会代表某类事物,所以说代表着异步操作返回解决,具体代表什么结果呢?有两种可能的结果一种是你异步正常completed之后的正常数据他的类型有两种Feature和T,T在这里代表泛型,也可能是完成过程中报错返回的error数据。
2.主要解决了什么?
避免在UI主线程做耗时操作,同时在异步线程完成操作后将结果返回到UI主线程做同步非耗时操作,简而言之,避免耗时操作阻塞UI主线程。
3.如何用?
最常用的用法是和async和await连用,作为async方法的返回值。
简单用法:
Future getFuture() async{
return 1;
}
Future<int> future = getFuture();//源码提供了很多实例化一个Future的方法,选个合适创建Future对象
future.then((value) => handleValue(value))
.catchError((error) => handleError(error));
类比操作:
// Synchronous code.
try