首页 > 解决方案 > 在树中的哪个位置使用 Provider 包装小部件以使用 Provider 来维护整个应用程序的状态?

问题描述

我的应用程序有一个简单的主页屏幕

class StartPage extends StatelessWidget {}

和两个额外的屏幕。用户被引导到其他屏幕,代码如下

Navigator.push(
       context,
       MaterialPageRoute(
         builder: (BuildContext context) => Page2(),
       ),

Navigator.push(
       context,
       MaterialPageRoute(
          builder: (BuildContext context) => Page3(),
       ),

Page2()有一个简单的秒表,我用 Provider 实现了它。我想将相同的秒表代码添加到Page3(). 我认为StartPage()“树”比Page2()and更进一步Page3(),如果我StartPage用 Provider 包装 的 build 方法(以及相关类中的 Consumer 小部件代码)

 @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<StopWatchProvider>(
      create: (context) => StopWatchProvider(),
      child: Scaffold()

那么秒表应该在两者中都按预期工作Page2()Page3()this SO post支持)。但这会引发一个关于无法找到提供者的错误,相反,我需要为提供者包装构建Page2()Page3()

我错过了什么?

标签: flutterflutter-provider

解决方案


你试过MaterialApp用你的包装Provider()吗?


推荐阅读