首先,我使用的是Flutter 的动画包,我的问题只是关于使用这个包:
在使用该包之前,我使用 wait 关键字将第二个视图推送到导航器,因此当用户从第二个视图返回时,将调用此后的代码:
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => DetailView()),
);
loadData();
Run Code Online (Sandbox Code Playgroud)
现在集成这个动画库后,我不调用Navigator.push()自己,而只定义目标小部件,导航由库完成。到目前为止,任何列表项的代码都只是 ListTile 小部件,现在它看起来像这样:
return OpenContainer(
openBuilder: (BuildContext _, VoidCallback closeContainer) {
return DetailView();
},
closedBuilder: (BuildContext _, VoidCallback openContainer) {
return _buildListTile(openContainer);
},
);
Run Code Online (Sandbox Code Playgroud)
在 _buildListTile 方法中,ListTile 是用 InkWell 包装的,InkWell 将此VoidCallback openContainer作为 onTap 参数。
我不知道如何等待用户单击第二个视图,从而返回第一个视图。我需要(重新)加载数据,如第一个代码片段所示。有人这样做过并且可以告诉我吗?我尝试使用 和openBuilder,closedBuilder但不幸的是没有成功......