问题标签 [flutter-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3893 浏览

android - ListView 项目的 Flutter Provider 模式

我正在尝试构建一个 ListView,其中使用提供者/消费者模式提供每个项目的状态。可以使用按钮添加项目并通过点击它们来删除它们。

我有两个状态类:

  • ListState保存一个字符串列表(那些字符串将显示在列表中)
  • ListItem保存每个项目的状态。

这种方法效果很好,并且 ListView 包含预期的项目。但是,如果项目被删除并添加,则 ListState 的列表包含正确的项目。在 ListView 中显示了一个奇怪的状态:

在此处输入图像描述

这是我的小部件,其中包含 Scaffold 和 ListView:

ListItemWidget 使用项目本身的状态和列表的状态。在 onTap 事件中,当前项目从列表中移除:

两个状态类在这里:

节点:同样的效果发生在 GridView 上

0 投票
1 回答
25 浏览

flutter - 如果我处理数据的类很少,应该使用 Provider 吗?

Provider我阅读了文档,并查看了很多示例,但如果我需要访问多个类中的数据,我仍然不明白应该使用。主要问题 -context在小部件之外不存在。

所以可能我不理解提供者的概念?这是我的意思的小例子:

我遇到了这个问题,我不知道如何解决它。

0 投票
1 回答
1106 浏览

flutter - Flutter:带有初始网络请求的 ChangeNotifierProvider

我有一个代表电影列表的小部件,在我的模型中,我有 getMovies() 函数,它从网络请求中检索电影列表:

然后从小部件中,我想根据请求的状态构建布局:

问题是,如何在小部件初始化的一开始就触发网络调用 getMovies() ?我试图在不同的点手动调用 getMovies() 方法,但我有一个错误,或者每次小部件调用其 build() 方法时调用都会重复。

提前致谢。

0 投票
0 回答
43 浏览

flutter - 我什么时候应该创建单独的 Provider 类?

我有处理数据的课程。我有两个选择。1. 直接注册为Provider:

  1. 创建 wrapper-provider 类。并将其用作提供者。

我什么时候应该使用第一个变体,什么时候应该使用第二个?

0 投票
1 回答
379 浏览

flutter - 为什么模型不能使用提供者访问另一个模型?

我想这样做(不可能):

似乎建议是使用ChangeNotifierProxyProvider
但这似乎非常低效。ChangeNotifierProxyProvider如果我还没有在 UI 中使用这个值,为什么我必须创建另一个层?我只想在这里混合Model1Model2业务逻辑。

感谢帮助!

0 投票
3 回答
27522 浏览

flutter - 找不到正确的提供者 - Flutter

当我弹出 InApp() 类时,我尝试修改 numberOfCoins 变量。但我有以下错误:

[VERBOSE-2:ui_dart_state.cc(148)] 未处理的异常:错误:在此 FantasyNbi 小部件上方找不到正确的提供程序

要修复,请:

  • 确保 Provider 是该 FantasyNbi 小部件的祖先 * 向 Provider 提供类型 * 向 Consumer 提供类型 * 向 Provider.of() 提供类型
  • 始终使用包导入。例如:import 'package:my_app/my_code.dart'; * Ensure the correct 上下文`正在被使用。
0 投票
1 回答
236 浏览

flutter - 使用 ChangeNotifierProxyProvider 的设置器错误

我正在尝试将字符串从Model1使用Model2传递ChangeNotifierProxyProvider,但它给出了错误:

'Model2'类中没有名为'string'的setter</p>

型号1

ChangeNotifierProxyProvider

模型2

感谢帮助!

0 投票
6 回答
7197 浏览

flutter - 如何访问 showModalBottomSheet 中提供的 (Provider.of()) 值?

我在一个小部件树中有一个 FloatingActionButton ,它有一个BlocProviderfrom flutter_bloc。像这样的东西:

打开一个模态底部表:

我正在尝试SomeBloc使用BlocProvider.of<SomeBloc>(context)inside访问,TheBottomSheet但出现以下错误:

我尝试使用https://stackoverflow.com/a/56533611/2457045BottomSheet中描述的解决方案,但仅适用于ModalBottomSheet.


注意:这不限于BlocProvideror flutter_bloc提供程序包中的任何提供程序都具有相同的行为。

如何访问BlocProvider.of<SomeBloc>(context)内部showModalBottomSheet

如果无法做到这一点,如何使https://stackoverflow.com/a/56533611/2457045解决方案适应模态底页?

0 投票
1 回答
4091 浏览

firebase - ChangeNotifier 过早地处理模型

我正在使用 Firestore 事务来避免添加超过 1 个用户聊天的竞争条件。如果事务超时,我会显示错误对话框。

但是,当我将此逻辑移至Model2with ChangeNotifier(and Provider) 时,它现在显示错误:

未处理的异常:处理后使用了 Model2。一旦在 Model2 上调用了 dispose(),就不能再使用它。

(Firestore 事务没有问题。这是预期的):

PlatformException(9,事务重试失败。:事务中读取的每个文档也必须写入该事务中。,null)

好像ChangeNotifier打电话dispose()太早了?

这意味着它不允许我处理竞争条件的错误,因为它已经被处理了。

模型:

提供者(在有状态的小部件中):

有谁知道解决方案?

谢谢!

更新:

fetchData();如果我之前从build方法中删除,问题不会抛出ChangeNotifierProxyProvider

但是为什么这可以解决问题?

0 投票
0 回答
72 浏览

flutter - 如何将提供者添加到第二个小部件树?

我尝试按照这个答案将提供程序添加到第二个小部件树(因此可以从函数调用提供程序)。但我得到错误:

[VERBOSE-2:ui_dart_state.cc(148)] 未处理的异常:错误:在此页面小部件上方找不到正确的提供程序

当然,我Model2在其他小部件树中提供了正确的,所以它有祖先。

相同的第一个小部件StatefulWidget

第二: