【发布时间】:2018-06-03 12:39:37
【问题描述】:
执行操作(例如“保存”)后,用户将返回到应用中的另一个页面。
我想在新页面上显示一个快餐栏以确认操作,但不希望它显示用户是否在没有操作的情况下导航到那里。例如,如果用户保存“事物”,应用程序会将他们发送到“事物”主页并显示“保存的”小吃栏,但如果他们以其他方式转到“事物”主页,我不想要“保存”小吃店在那里。
这是我在面板上保存的代码,但目标页面不显示小吃栏 - 无论我将小吃栏放在哪里(导航之前或之后),它都不会执行小吃栏。
Future<Null> saveThatThing() async {
thing.save();
thing = new Thing();
Navigator.of(context).push(getSavedThingRoute());
Scaffold.of(context).showSnackBar(
new SnackBar(
content: new Text('You saved the thing!'),
),
);
}
最好的方法是什么?
【问题讨论】:
-
见stackoverflow.com/a/46108172/918867。在新页面的 initState 处使用 Future.delayed。
-
还可以看看snack_bar_demo github.com/flutter/flutter/blob/master/examples/flutter_gallery/… + Navigator.of().push() 返回Future,所以你可以等待它吗? :/ docs.flutter.io/flutter/widgets/Navigator/push.html
-
我猜您还可以选择显示快餐栏,从而在导航到下一个屏幕之前传递您的信息,方法是在
Navigator.of(context).push(getSavedThingRoute())之前添加延迟 -
FWIW,你应该
await那个push()。此外,在StatelessWidget中执行此操作目前不起作用。将小部件更改为有状态对我有用。