【发布时间】:2020-06-07 01:31:07
【问题描述】:
我正在为 Flutter 使用 provider 包。我想要完成的是为一个视图或页面提供一个简单的提供程序。所以我在我的小部件中尝试了以下内容:
Widget build(BuildContext context) {
return ChangeNotifierProvider<MyModel>(
create: (_) => MyModel(),
child: Scaffold(
appBar: AppBar(
title: Text(
'Screen 1',
),
),
body: _buildBody(),
),
);
}
但是当我尝试在我的_buildBody() 方法中使用Provider.of<MyModel>(context, listen: false).value 访问提供程序时,我得到了错误:
在此 MyPageWidget 上方找不到正确的提供程序
当我将提供者的声明移动到我在此小部件上方声明我的应用程序的位置时,它可以工作。不幸的是,这使提供者公开了我所有的访问视图,这不是我想要的。如何制作一个只能在该视图或小部件中访问的提供程序。感谢您的帮助。
注意:我试过这个answer,但我仍然得到相同的结果。
编辑:我可以在小部件树的顶部使用Consumer,但如果我的整个小部件树都在Consumer 中,这不会导致页面重建太多.另外,如果我需要使用Provider.of(...)怎么办?
【问题讨论】:
标签: flutter dart flutter-provider