gpt4 book ai didi

flutter - 单 View flutter 的提供者

转载 作者:行者123 更新时间:2023-12-03 04:57:15 29 4
gpt4 key购买 nike

我正在使用Flutter的provider软件包。我要实现的是为一个 View 或页面提供一个简单的提供程序。因此,我在小部件中尝试了以下操作:

Widget build(BuildContext context) {
return ChangeNotifierProvider<MyModel>(
create: (_) => MyModel(),
child: Scaffold(
appBar: AppBar(
title: Text(
'Screen 1',
),
),
body: _buildBody(),
),
);
}

但是当我尝试在 Provider.of<MyModel>(context, listen: false).value方法中使用 _buildBody()访问提供程序时,出现错误:

Could not find the correct Provider above this MyPageWidget



当我将提供程序的声明移到我在此小部件上方声明我的应用程序的位置时,它将起作用。不幸的是,这使提供程序公开供我访问的所有 View ,这不是我想要的。我该如何创建一个可以在该 View 或窗口小部件中访问的提供程序。谢谢你的帮助。

注意:我尝试了这个 answer,但仍然得到相同的结果。

编辑:我可以在小部件树的顶部使用 Consumer,但是如果我的整个小部件树都在 Consumer中,那不会导致页面重建太多。此外,如果我需要使用 Provider.of(...)怎么办?

最佳答案

尝试将脚手架与消费者包装在一起

Widget build(BuildContext context) {
return ChangeNotifierProvider<MyModel>(
create: (_) => MyModel(),
child: Consumer(
builder: (context, MyModel model, _) => Scaffold(
appBar: AppBar(
title: Text(
'Screen 1',
),
),
body: _buildBody(),
),
));
}

现在您可以通过将其传递给方法来直接访问我的模型

关于flutter - 单 View flutter 的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358639/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com