My Appには、2種類のユーザーがあります。adminとnormal。管理画面をadminおよび標準画面に通常のユーザーに表示します。すべてのユーザーがアクセス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(
AdminScreen
だけmodel2
を置きたいです。ただし、このような他の管理ページは_AdminScreen
の子孫ではないため、model2
の後にNavigator.Push
にアクセスできません。
手伝ってくれてありがとう!
既存のモデルフォワードを渡すことができます。既存のものの値を使用して、新しいChangeNotifierProvider
を作成できます。
そのためには、既存の_ChangeNotifierProvider.value
_を値として渡す_model2
_コンストラクタを使用する必要があります。
ChangenoTifierのインスタンスがすでにインスタンスされている場合は、デフォルトのコンストラクタの代わりにChangeNotifierProvider.valueを使用する必要があります。
_MaterialPageRoute(
builder: (context) => ChangeNotifierProvider.value(
value: model2,
child: SecondRoute(),
),
);
_