flutter - 在树中的哪个位置使用 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()
。
我错过了什么?
解决方案
你试过MaterialApp
用你的包装Provider()
吗?
推荐阅读
- python - 未找到 PyTorch 桶迭代器
- python - 由 cx_Freeze 制作的 Tkinter exe 在快捷方式文件夹中找不到 png 文件
- github - GitHub GraphQL 不断返回 POST https://api.github.com/graphql 401 错误
- openstreetmap - Photon OSM 仅作为结果返回城市
- python - SpaCy 3 交叉验证
- visual-studio-code - VS Code,ColdFusion,评论快捷方式产生错误评论
- entity-framework - 将 EF Core 5 多对多关系与具有额外数据的“联接表”一起使用
- c# - 用于 Elasticsearch 的 .NET NEST 客户端
- api - 当我必须在循环中使用 get request 获取这些数据时,如何将数据放入类对象中?
- python - Kivymd OneListItem 与复选框两个图标和复选框出现