【问题标题】:How to reload a FutureBuilder in Flutter?如何在 Flutter 中重新加载 FutureBuilder?
【发布时间】:2021-11-29 17:34:08
【问题描述】:

我这里有一个 FutureBuilder:

FutureBuilder<List<Task>>(
                          future:
                            getTasks(),
                          builder: (BuildContext context, AsyncSnapshot<List<Task>> snapshot){
                            if(snapshot.hasError){
                              return const Text('Erreur');
                            }
                            if(snapshot.hasData){
                              return ListView(
                                shrinkWrap: true,
                                physics: NeverScrollableScrollPhysics(),
                                children: taskList.map((e) => TaskContainer(
                                  task: e
                                )).toList(),
                              );
                            }
                            return const Center(child: CircularProgressIndicator());
                          }
                        )

返回任务列表作为日历中的彩色块容器,如下所示:

问题是每当我导航到日历中的另一个月份时,FutureBuilder 都会再次从 web 服务获取数据,每次更改月份时都会重复任务:

这是我在月份之间导航的函数代码:

    _toPreviousMonth(){
    setState(() {
      datess.clear();
      dayss.clear();
      startMonth = new DateTime(startMonth.year, startMonth.month - 1, 1);
    });
  }

  _toNextMonth(){
    setState(() {
      datess.clear();
      dayss.clear();
      startMonth = new DateTime(startMonth.year, startMonth.month + 1, 1);
    });
  }

实际上我不介意 FutureBuilder 在我更改月份时获取数据,因为最终目标是显示所选日期的任务。

但我想要的是在我在几个月之间导航时,有一种方法可以抑制从前一次获取中构建的容器,

感谢您的帮助:)

【问题讨论】:

  • 你能显示getTasks()的代码吗?

标签: flutter dart asynchronous fetch flutter-futurebuilder


【解决方案1】:

您的代码未在FututrBuilder??中显示您如何使用快照?

我怀疑您每次使用 setState( ) 重新构建时都会将任务直接添加到列表中。

解决方案:buid( )方法的开头重置你的任务list

@override Widget build(BuildContext context) {
yourTaskList = [] //if an array or adjust if other type

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2021-11-30
    • 2023-03-21
    • 2020-09-28
    • 2019-12-04
    • 2018-12-15
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多