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

网站开发建设付款方式郑州网站托管

网站开发建设付款方式,郑州网站托管,企业网站可以自己做,erp系统是什么意思在 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.ritt.cn/news/25970.html

相关文章:

  • 网站日志类型门户网站推广方案
  • 怎么发布网站seo软文是什么意思
  • 网站备案号怎么查询世界杯比分
  • 建一个定制网站要多少钱培训课程安排
  • 音乐网站是否可以做浅度链接长沙优化科技
  • 做本地房产网站深圳网站优化软件
  • 广安网站seo优化seo方法
  • 深圳市住建局网站官网朋友圈推广怎么收费
  • 什么时候能用ipv6做网站吉林网络公司
  • 谁知道深圳松岗天桥旁的网站建设长沙网站公司品牌
  • 凡科轻站2020做seo还有出路吗
  • 哈尔滨市香坊区建设局网站如何搜索关键词热度
  • 保护膜 东莞网站建设热狗网站排名优化外包
  • 网站视觉优化怎么做seo是干啥的
  • 保定网页模板建站关键词排名优化软件价格
  • 怎么做推广和宣传企业做网站中文搜索引擎排名
  • wordpress支付宝捐赠插件seo网站关键词排名快速
  • 太原网站开发培训nba最新消息交易
  • 家用电器网页设计实训报告苏州网站优化排名推广
  • WordPress加载语言包最新seo新手教程
  • 确定网站风格qq代刷网站推广免费
  • 网页设计书籍推荐惠州seo建站
  • lamp环境做网站网站搜索量查询
  • 手机网站建设方法搜索引擎优化实验报告
  • 北京微网站建设设计服务百度关键词排名突然下降很多
  • 达川网站制作友链之家
  • 权威发布是鼠头百度竞价优化
  • 北京企业推广神马seo教程
  • 网站建设年份查询全网搜索
  • 上海网站制作建设多少钱营销型网站建设报价