我正在学习provider + ChangeNotifier for state management,但我找不到任何关于如何从ChangeNotifier实现导航的官方指导。
假设我们改进了provider_shopper示例here,这样当用户单击BUY时,CartModel会执行一些购买逻辑,然后导航到Order Review页面。这个导航应该如何实现?
我们是否为CartModel提供回调,这样它就会调用它并触发UI上的导航?
发布于 2019-08-03 04:08:56
也许有一种更简单、更优雅的解决方案,但我只能想到使用一个页面,去掉Navigator:
@override
Widget build(BuildContext context) {
final appProvider = Provider.of<AppProvider>(context);
switch (appProvider.getCurrentPage()) {
case 'home': return homePage(appProvider);break;
case 'test': return testPage(appProvider,context);break;
}
return homePage(appProvider);
}每个“页面”只是一个返回Wigdet(一个脚手架)的函数:
Widget testPage(AppProvider appProvider,BuildContext context) {
return WillPopScope(
onWillPop: () {return controlBackButton(appProvider,context);},
child: Scaffold(
appBar: AppBar(
title: Text('Test Page'),
),更改页面:
void changePage(AppProvider appProvider,String page) {
setState(() {
appProvider.setCurrentPage(page);
});
}除主页外的所有页面都需要包装在WillPopScope小部件中,以便使后退按钮导航到主页屏幕:
Future<bool> controlBackButton(AppProvider appProvider) async{
setState(() {
appProvider.setCurrentPage('home');
});
return false;
}我认为,这不是最好的解决方案,但却是一个很好的开始。
https://stackoverflow.com/questions/57330108
复制相似问题