用future builder刷新主页上的数据,点击按钮--flutter。

问题描述 投票:0回答:1

我有一个应用程序有两个屏幕,主页和更新页面.主页显示项目列表和更新页面更新项目。

我有困难刷新主页,以显示当前的更新,当我弹回它。

如何才能在我路由回首页时刷新首页。

请看代码,导航到更新页面

// home page


       // build the list widget
          Widget _buildTaskWidget(task) {
            return ListTile(
                leading: Icon(Icons.assignment),
                title: Text(task['name']),
                subtitle: Text(task['created_at']),
                onTap: () async {
                  await Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (context) => UpdateTask(task: task),
                    ),
                  );
                  await fetchAllTask();
                });
          }

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: FutureBuilder(
          future: fetchAllTask(),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              List tasks = snapshot.data;
              listItems = tasks;

              return _buildTaskList(tasks);
            } else if (snapshot.hasError) {
              return Text("${snapshot.error}");
            }
            return Center(
              child: ShowLoader(),
            );
          }),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          Navigator.push(
              context, MaterialPageRoute(builder: (context) => AddTask()));
        },
        tooltip: 'Add Task',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }

/ 更新页面导航回到主页。

onPressed: () async {
              var res = await updateNewTask(_taskTextInput.text,
                  _vendorTextInput.text, _amountTextInput.text, id);
              print(res);
              Navigator.pop(context);
            },
flutter dart flutter-layout flutter-web dart-webui
1个回答
0
投票

Navigator.push 返回一个 Future 当推送的路由被弹出时,它就完成了。所以在你的 FloatingActionButton's onPressed 你可以做一些类似的功能。

onPressed: () async {
  await Navigator.push(context, MaterialPageRoute(builder: (context) => AddTask()));
  //refresh your data here
},
© www.soinside.com 2019 - 2024. All rights reserved.