我可以用 Provider 包装 MaterialApp 小部件吗?

Posted

技术标签:

【中文标题】我可以用 Provider 包装 MaterialApp 小部件吗?【英文标题】:Can I wrap the MaterialApp widget with the Provider? 【发布时间】:2020-01-01 15:05:34 【问题描述】:

我是 Flutter 的新手,我正在尝试使用提供程序创建一个应用程序。我用 ChangeNotifierProvider 包装了 MaterialApp 小部件,该应用程序可以正常工作,我可以按预期使用该提供程序。我需要知道这样做可以吗,我会遇到任何问题吗?

Widget build(BuildContext context) 
    return ChangeNotifierProvider<BaseModel>(
        builder: (context) =>
            BaseModel(loading: false, title: "Title", isLoggedIn: false),
        child: MaterialApp(
            routes: <String, WidgetBuilder>
                "/home": (BuildContext context) => Home(),
                "/signIn": (BuildContext context) => SignIn()
            ,
            initialRoute: "/signIn",
            title: 'Flutter Demo',
            theme: ThemeData(
                // is not restarted.
                primarySwatch: Colors.blue,
            ),
            home: SignIn()),
    );

在所有示例代码中,他们在 MaterialApp 小部件的“主页”下使用 Provider。我在提供程序中使用了 MaterialApp。

【问题讨论】:

【参考方案1】:

完全没问题。没有任何问题。

【讨论】:

谢谢!你有更好的解决方案来使用提供者模式和命名路由吗? 我整天都在寻找解决方案,但没有运气

以上是关于我可以用 Provider 包装 MaterialApp 小部件吗?的主要内容,如果未能解决你的问题,请参考以下文章

Material-ui v1标签标签包装错误

React Material UI 包装 TableRow

是否可以在多个组件上使用相同的 <Context.Provider> ?

如何使用 Next.js 仅将一些页面包装在 Context Provider 中?

useDispatch() 错误:找不到 react-redux 上下文值;请确保组件包装在 <Provider>

在 React EXPO 中为 React Redux 包装 <App> 在 <Provider>