我的应用程序有2种类型的用户:管理和正常。我将管理屏幕显示给管理员,普通屏幕显示给普通用户。所有用户都需要access Provider model1。但是只有管理员需要访问model2。
我如何为管理员用户初始化model2?
例如:
class MyApp extends StatelessWidget {
final model1 = Model1();
final model2 = Model2();
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => model1),
ChangeNotifierProvider(builder: (_) => model2),
],
child: MaterialApp(我只想把model2放在AdminScreen里。但是如果我这样做,其他管理页面就不能在Navigator.push之后访问Navigator.push,因为它们不是AdminScreen的后代。
谢谢你帮忙!
发布于 2019-09-12 22:04:40
您可以使用现有模型的值向前传递现有模型,创建一个新的ChangeNotifierProvider。
为此,需要使用ChangeNotifierProvider.value构造函数,将现有的model2作为值传递。
如果您已经有了ChangeNotifier的一个实例并希望公开它,那么应该使用ChangeNotifierProvider.value而不是默认的构造函数。
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider<Model2>.value(
value: model2,
child: SecondRoute(),
),
);https://stackoverflow.com/questions/57913888
复制相似问题