在树中的哪个位置用 Provider 包装小部件以使用 Provider 在整个应用程序中维护状态?

Where in the tree to wrap widget with Provider to use the Provider for maintaining state throughout an app?

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

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()Page3() 更靠近 "tree",并且如果我用 Provider 包装 StartPage 的构建方法(连同Consumer widget里面的相关代码类)

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

那么秒表应该在 Page2()Page3() 中都按预期工作(由 支持)。但这会引发无法找到提供者的错误,相反,我需要使用提供者包装 Page2()Page3() 的构建器。

我错过了什么?

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