当前位置: 首页 > news >正文

360免费建站李梦济南源聚网络公司

360免费建站李梦,济南源聚网络公司,湘潭网站建设方案表格,包小盒设计网站在 Flutter 中,如果你想让 FutureBuilder 的 future 函数再次执行,可以通过以下几种方式实现: 方法 1:使用 Key 强制重建 FutureBuilder 通过改变 FutureBuilder 的 key,可以强制 Flutter 重建它,从而重新…

在 Flutter 中,如果你想让 FutureBuilderfuture 函数再次执行,可以通过以下几种方式实现:


方法 1:使用 Key 强制重建 FutureBuilder

通过改变 FutureBuilderkey,可以强制 Flutter 重建它,从而重新执行 future 函数:

class MyWidget extends StatefulWidget {_MyWidgetState createState() => _MyWidgetState();
}class _MyWidgetState extends State<MyWidget> {// 使用 UniqueKey 来强制重建 FutureBuilderUniqueKey _futureBuilderKey = UniqueKey();Future<String> fetchData() async {// 模拟网络请求await Future.delayed(Duration(seconds: 2));return "New Data: ${DateTime.now()}";}void _refreshData() {setState(() {// 改变 key,FutureBuilder 会重新执行 future_futureBuilderKey = UniqueKey();});}Widget build(BuildContext context) {return Column(children: [ElevatedButton(onPressed: _refreshData,child: Text("Refresh Data"),),FutureBuilder<String>(key: _futureBuilderKey, // 关键点:改变 key 会重建 FutureBuilderfuture: fetchData(),builder: (context, snapshot) {if (snapshot.connectionState == ConnectionState.waiting) {return CircularProgressIndicator();}if (snapshot.hasError) {return Text("Error: ${snapshot.error}");}return Text("Data: ${snapshot.data}");},),],);}
}

方法 2:使用 StatefulWidget 管理 future

StatefulWidget 中存储 future,并在需要刷新时重新调用 fetchData

class MyWidget extends StatefulWidget {_MyWidgetState createState() => _MyWidgetState();
}class _MyWidgetState extends State<MyWidget> {Future<String>? _futureData;Future<String> fetchData() async {await Future.delayed(Duration(seconds: 2));return "New Data: ${DateTime.now()}";}void initState() {super.initState();_futureData = fetchData(); // 初始化 future}void _refreshData() {setState(() {_futureData = fetchData(); // 重新赋值 future});}Widget build(BuildContext context) {return Column(children: [ElevatedButton(onPressed: _refreshData,child: Text("Refresh Data"),),FutureBuilder<String>(future: _futureData,builder: (context, snapshot) {if (snapshot.connectionState == ConnectionState.waiting) {return CircularProgressIndicator();}if (snapshot.hasError) {return Text("Error: ${snapshot.error}");}return Text("Data: ${snapshot.data}");},),],);}
}

方法 3:使用 StreamBuilder 替代 FutureBuilder

如果数据需要频繁刷新,可以考虑使用 Stream + StreamBuilder

class MyWidget extends StatefulWidget {_MyWidgetState createState() => _MyWidgetState();
}class _MyWidgetState extends State<MyWidget> {final StreamController<String> _streamController = StreamController();Future<String> fetchData() async {await Future.delayed(Duration(seconds: 2));return "New Data: ${DateTime.now()}";}void _refreshData() {fetchData().then((data) {_streamController.add(data); // 手动推送新数据到 Stream});}void initState() {super.initState();_refreshData(); // 初始化数据}void dispose() {_streamController.close();super.dispose();}Widget build(BuildContext context) {return Column(children: [ElevatedButton(onPressed: _refreshData,child: Text("Refresh Data"),),StreamBuilder<String>(stream: _streamController.stream,builder: (context, snapshot) {if (snapshot.connectionState == ConnectionState.waiting) {return CircularProgressIndicator();}if (snapshot.hasError) {return Text("Error: ${snapshot.error}");}return Text("Data: ${snapshot.data}");},),],);}
}

总结

方法适用场景特点
改变 Key简单场景强制重建 FutureBuilder,适合一次性刷新
重新赋值 future推荐方式通过 setState 更新 future,逻辑清晰
StreamBuilder频繁刷新适合需要持续监听数据变化的场景

选择最适合你需求的方式即可!

http://www.yayakq.cn/news/347882/

相关文章:

  • 建站网站案例丹徒网站建设哪家好
  • 网站开发业务好做吗wordpress 小工具修改
  • 德州力点科技 网站建设html网站模仿
  • 厚街网站建设报价wordpress 迁移 数据库
  • 网站套程序山东网站建设服务商
  • zepto网站开发企业个人邮箱怎么注册
  • 软件app网站建设网站开发的对联
  • dz插件网站和自己做的网站区别shopify网站建设
  • 网站建设外包被骗阿里云虚拟主机做淘客网站
  • 快手刷评论推广网站北京通州做网站
  • 网站建设开头seo综合查询可以关了吗
  • 鄂尔多斯 网站建设网站域名备案认证
  • 江西省住房和城乡建设厅网站高端定制网站建设公司
  • 小企业网站建设方案做优化网站
  • 网站后台发布文章seo海外推广
  • 学校网站建设实施方案百度权重是怎么来的
  • 音乐网站建设目标引迈快速开发平台
  • 宽屏网站js域名就是网站名吗
  • 临清网站建设价格如何注册网站域名
  • 北京城乡建设官方网站外贸网站建设与优化
  • 网站速度优化做wordpress模板赚钱
  • 阿里云网站建设素材石家庄百成网络
  • 无锡网站定制免费淘宝客网站建设
  • 建设兼职网站目的wordpress revision
  • 用模块做网站国际电商平台有哪些
  • 东莞免费做网站徐州泉山区建设局网站
  • 苏州房地产网站建设全球游戏制作公司排名
  • wordpress+行间距插件网站访问速度优化
  • 网站开发哪种语言比较好婚纱摄影网站策划书
  • 积极做好门户网站建设工作简洁公司网站源码