Flutter 动画包 - 当用户返回时如何等待 Navigator.push() 做某事
Flutter animations package - how to await Navigator.push() to do something when user navigates back
首先,我使用的是 animations package from Flutter,我的问题只是关于使用这个包:
在使用该包之前,我使用 await 关键字将第二个视图推送到 Navigator,因此当用户从第二个视图返回时,会调用此后的代码:
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => DetailView()),
);
loadData();
现在集成这个动画库后,我不自己调用Navigator.push()
,只定义目标小部件,导航由库完成。
到目前为止,任何列表项的代码都只是 ListTile 小部件,现在看起来像这样:
return OpenContainer(
openBuilder: (BuildContext _, VoidCallback closeContainer) {
return DetailView();
},
closedBuilder: (BuildContext _, VoidCallback openContainer) {
return _buildListTile(openContainer);
},
);
在 _buildListTile 方法中,ListTile 被 InkWell 包装,InkWell 将此 VoidCallback openContainer
作为 onTap 参数。
我无法找到的是如何等待用户点击第二个视图并返回到第一个视图。我需要(重新)加载数据,如第一个代码片段所示。有没有人这样做并且可以告诉我?
我尝试使用 openBuilder
和 closedBuilder
,但不幸的是没有成功...
感谢GitHub issue两天前用户'The-Redhat'推送动画包master分支启用OpenContainer
onClose
事件
的改变
要在软件包正式版本发布之前使用它,只需将 pubspec.yaml 中的 animations
软件包替换为
animations:
git:
url: git://github.com/flutter/packages.git
path: packages/animations
此时您只需将自定义函数传递给 OpenContainer
小部件,每次关闭时都会执行该小部件。在您的情况下,您现在可以在用户返回 "parent widget".
时更新数据
更新
从 2020 年 6 月 2 日起,此功能在 animations
v1.1.0
上可用
Add OpenContainer.onClosed, which is called with a returned value when the container was popped and has returned to the closed state.
首先,我使用的是 animations package from Flutter,我的问题只是关于使用这个包:
在使用该包之前,我使用 await 关键字将第二个视图推送到 Navigator,因此当用户从第二个视图返回时,会调用此后的代码:
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => DetailView()),
);
loadData();
现在集成这个动画库后,我不自己调用Navigator.push()
,只定义目标小部件,导航由库完成。
到目前为止,任何列表项的代码都只是 ListTile 小部件,现在看起来像这样:
return OpenContainer(
openBuilder: (BuildContext _, VoidCallback closeContainer) {
return DetailView();
},
closedBuilder: (BuildContext _, VoidCallback openContainer) {
return _buildListTile(openContainer);
},
);
在 _buildListTile 方法中,ListTile 被 InkWell 包装,InkWell 将此 VoidCallback openContainer
作为 onTap 参数。
我无法找到的是如何等待用户点击第二个视图并返回到第一个视图。我需要(重新)加载数据,如第一个代码片段所示。有没有人这样做并且可以告诉我?
我尝试使用 openBuilder
和 closedBuilder
,但不幸的是没有成功...
感谢GitHub issue两天前用户'The-Redhat'推送动画包master分支启用OpenContainer
onClose
事件
要在软件包正式版本发布之前使用它,只需将 pubspec.yaml 中的 animations
软件包替换为
animations:
git:
url: git://github.com/flutter/packages.git
path: packages/animations
此时您只需将自定义函数传递给 OpenContainer
小部件,每次关闭时都会执行该小部件。在您的情况下,您现在可以在用户返回 "parent widget".
更新
从 2020 年 6 月 2 日起,此功能在 animations
v1.1.0
Add OpenContainer.onClosed, which is called with a returned value when the container was popped and has returned to the closed state.