我有一个应用程序有两个屏幕,主页和更新页面.主页显示项目列表和更新页面更新项目。
我有困难刷新主页,以显示当前的更新,当我弹回它。
如何才能在我路由回首页时刷新首页。
请看代码,导航到更新页面
// 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);
},
Navigator.push
返回一个 Future
当推送的路由被弹出时,它就完成了。所以在你的 FloatingActionButton
's onPressed
你可以做一些类似的功能。
onPressed: () async {
await Navigator.push(context, MaterialPageRoute(builder: (context) => AddTask()));
//refresh your data here
},