我的应用有2种类型的用户:管理员和普通用户。我向管理员显示管理员屏幕,向普通用户显示普通屏幕。所有用户都需要访问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
中。但是,如果执行此操作,其他管理页面将无法访问model2
之后的Navigator.push
,因为它们不是AdminScreen
的后代。感谢帮助!
最佳答案
您可以将现有模型向前传递,使用现有模型的值创建一个新的ChangeNotifierProvider
。
为此,您需要使用ChangeNotifierProvider.value
构造函数,将现有的model2
传递为值。
MaterialPageRoute(
builder: (context) => ChangeNotifierProvider.value(
value: model2,
child: SecondRoute(),
),
);