栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我什么时候应该使用FutureBuilder?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我什么时候应该使用FutureBuilder?

FutureBuilder
删除 一些 样板代码

假设您要

fetch data from backend
启动页面并显示加载程序,直到数据到来。

ListBuilder的任务:

  • 有两个状态变量1.
    dataFromBackend
    2。
    isLoadingFlag
  • 在启动时,设置
    isLoadingFlag = true
    并根据显示
    loader
  • 数据到达后,请根据您的数据来设置数据
    backend
    并进行设置
    isLoadingFlag = false
    setState
    显然在内部)
  • 我们需要有一个
    if-else
    widget
    创作。如果
    isLoadingFlag
    true
    ,则显示
    loader
    其他显示
    data
    。如果失败,请显示
    error message

FutureBuilder的任务:

  • future
    Future Builder中提供异步任务
  • 基于
    connectionState
    ,秀
    message
    loading
    active(streams)
    done
  • 基于
    data(snapshot.hasError)
    显示视图

FutureBuilder的优点

  • two flags
    ,不
    setState
  • 反应式编程(
    FutureBuilder
    将负责更新有关数据到达的视图)

例:

    new FutureBuilder<String>(        future: _fetchNetworkCall, // async work        builder: (BuildContext context, AsyncSnapshot<String> snapshot) {switch (snapshot.connectionState) {  case ConnectionState.waiting: return new Text('Loading....');  default:    if (snapshot.hasError)       return new Text('Error: ${snapshot.error}');    else   return new Text('Result: ${snapshot.data}'); }         },        )

性能影响:

我只是看了一下

FutureBuilder
代码,以了解使用它的 性能 影响。

  • FutureBuilder只是
    StatefulWidget
    state
    变量为
    _snapshot
  • 初始状态为
    _snapshot = new AsyncSnapshot<T>.withData(ConnectionState.none, widget.initialData);
  • 订阅
    future
    我们要发送的构造函数并
    state
    基于该更新。
        widget.future.then<void>((T data) {        if (_activeCallbackIdentity == callbackIdentity) {      setState(() {        _snapshot = new AsyncSnapshot<T>.withData(ConnectionState.done, data);       });     }    }, onError: (Object error) {    if (_activeCallbackIdentity == callbackIdentity) {      setState(() {        _snapshot = new AsyncSnapshot<T>.withError(ConnectionState.done, error);      });     }    });

因此,这

FutureBuilder
是我们通常所做的工作的包装/样板。因此,不应有任何性能影响。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号