首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在导航到另一条路由后使用提供程序?

如何在导航到另一条路由后使用提供程序?
EN

Stack Overflow用户
提问于 2019-09-12 20:11:25
回答 1查看 9.7K关注 0票数 15

我的应用程序有2种类型的用户:管理和正常。我将管理屏幕显示给管理员,普通屏幕显示给普通用户。所有用户都需要access Provider model1。但是只有管理员需要访问model2

我如何为管理员用户初始化model2

例如:

代码语言:javascript
复制
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的后代。

谢谢你帮忙!

EN

回答 1

Stack Overflow用户

发布于 2019-09-12 22:04:40

您可以使用现有模型的值向前传递现有模型,创建一个新的ChangeNotifierProvider

为此,需要使用ChangeNotifierProvider.value构造函数,将现有的model2作为值传递。

如果您已经有了ChangeNotifier的一个实例并希望公开它,那么应该使用ChangeNotifierProvider.value而不是默认的构造函数。

代码语言:javascript
复制
MaterialPageRoute(
  builder: (context) => ChangeNotifierProvider<Model2>.value(
    value: model2,
    child: SecondRoute(),
  ),
);
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57913888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档