flutter - 导航到另一条路线后如何消费Provider?

标签 flutter dart flutter-provider

我的应用程序有两种类型的用户:管理员和普通用户。我向管理员显示管理屏幕,向普通用户显示普通屏幕。所有用户都需要访问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 之后访问 model2,因为它们不是 AdminScreen 的后代。

感谢您的帮助!

最佳答案

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

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

If you already have an instance of ChangeNotifier and want to expose it, you should use ChangeNotifierProvider.value instead of the default constructor.

MaterialPageRoute(
  builder: (context) => ChangeNotifierProvider<Model2>.value(
    value: model2,
    child: SecondRoute(),
  ),
);

关于flutter - 导航到另一条路线后如何消费Provider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57913888/

相关文章:

flutter - 如何转换List <Object> flutter

flutter - 如果用户在 flutter 中点击它,如何只从堆栈中删除顶部小部件?

Dio改造子库的Flutter缓存机制

Flutter:CustomPainter 绘制方法被调用多次而不是一次

dart - Flutter阻止ListView重新呈现其子级

flutter - 既然已经有了 Flutter 内置的 setState,为什么还要在 Flutter 中使用 BloC 或 Provider?

flutter - 在小部件中初始化StateProvider

flutter - 在 flutter 中,在 initstate() 之前调用了dependOnInheritedElement()

android - 登录页面状态失败的断言问题

text - 始终显示滚动条 - Flutter