异步数据加载控件FutureBuilder和StreamBuilder
Name | Desc |
---|---|
FutureBuilder | 基于与Future交互的最新快照来构建自身的widget |
StreamBuilder | 基于与流交互的最新快照构建自身的widget |
FutureBuilder和StreamBuilder都是Flutter中非常常用的异步数据加载控件,它们的区别和联系如下:
区别:
- FutureBuilder用于异步操作只返回一次结果的情况,而StreamBuilder用于异步操作返回多次结果的情况。
- FutureBuilder在异步操作完成后,只会重新构建一次UI,而StreamBuilder则会在异步操作更新数据时,不断重新构建UI。
- FutureBuilder的builder函数的参数类型是AsyncSnapshot
,而StreamBuilder的builder函数的参数类型是AsyncSnapshot ,其中T分别表示异步操作返回的结果类型。
联系:
- 无论是FutureBuilder还是StreamBuilder,在builder函数中都需要根据AsyncSnapshot的状态来构建UI组件,通常包括waiting(正在加载)、hasError(加载出错)、hasData(加载成功)等状态。
- FutureBuilder和StreamBuilder都可以通过initialData参数来设置异步操作的初始值,以及通过future和stream参数来设置异步操作。
综上所述,FutureBuilder和StreamBuilder都是非常常用的异步数据加载控件,区别在于处理的异步操作类型不同,但它们在处理异步操作的过程中,都需要通过builder函数来根据AsyncSnapshot的状态来构建UI组件,从而展示异步数据的加载状态。