【发布时间】:2023-03-20 21:14:01
【问题描述】:
我的应用有一个简单的主页屏幕
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() 更接近“树”,如果我用提供者包装StartPage 的构建方法(以及相关类中的消费者小部件代码)
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<StopWatchProvider>(
create: (context) => StopWatchProvider(),
child: Scaffold()
那么秒表应该在Page2() 和Page3()(由this SO post 支持)中按预期工作。但这会引发无法找到提供程序的错误,相反,我需要使用提供程序包装 Page2() 和 Page3() 的构建器。
我错过了什么?
【问题讨论】: