问题标签 [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 回答
476 浏览

flutter - 如何设置同一个 ChangeNotifier 的多个 ChangeNotifierProvider?

我有一个扩展类ChangeNotifier,如下所示:

addListNovelByCategoryID将根据id参数调用后端 API,参数表示类别 id。而且我有 14 个类别,所以我需要 14 个单独的列表,它们有自己的数据并将它们放入TabBarView.

我打算设置多个ChangeNotifierProvider<NovelNotifier>,但不知道如何或是否Provider支持这种情况。

0 投票
1 回答
1789 浏览

flutter - 如何在 Flutter 的单例中使用 Provider.of(...)?

我在widget小部件树的深处有这个:

TimersModel获取上下文:

NotificationsService并第一次也是唯一一次实例化这个单例:

如您所见,这是一个单例FlutterLocalNotificationsPlugin

问题是,如果我Provider.of<TimersModel>(context)...从这个单例中调用,虽然它得到了正确的上下文,但它总是抛出ProviderNotFoundError.

如果我在提供者的这段代码上放置一个断点:

上下文ChangeNotifierProvider和类型TimersModel是正确的。但提供者始终为空。

我知道单例不是小部件,当然,它不在小部件树中。

Provider.of<TimersModel>(context)...但是,只要我提供正确的上下文和类型,我就不能从任何地方调用吗?

或者这应该起作用而我做错了什么?

0 投票
1 回答
1040 浏览

flutter - StreamProvider 不更新列表

我有一个 StreamController 应该更新 aList但它没有发生:

当我打电话时,updateGeofences我在日志中有很多地理围栏。但是小部件没有重建!

这是我的提供商设置:

当我直接从我的服务中收听时

流发出新数据......但不是在 StreamProvider:updateShouldNotify中:从未被调用(我没有运气尝试过这个答案的解决方案)

以下是我查看数据的方式:

但是这个列表仍然是空的。

我有另一个带有简单 Map 的 StreamController 可以完美运行。怎么了?

0 投票
0 回答
726 浏览

flutter - 使用flutter-provider从子小部件更新父小部件

如何使用更新子小部件的父小部件的onTap状态provider

目前我正在做的是将一个函数从父级传递给子级,该setState()函数在父级结束时调用该函数(请参阅下面的伪代码),但我正在寻找一种更强大的方法来做到这一点。

这是我可以表示问题的最简单方法,setState()在父级(在实际代码中)强制父级小部件更新其视图。

在实际代码中,我让子小部件处理数据库查询,单击子小部件会更改数据库中的值,这些值将由父小部件更新。因此,当我单击子小部件时,它会更新 db,然后调用 db notifyParent(),然后导致父级再次查询 db 并更新视图。

在不使用提供程序的情况下,有没有更好的方法来做到这一点setState()?如何使用 say aChangeNotifierProvider通知数据库更改?或者有什么方法可以在数据库中的某些内容发生更改时通知父小部件,以便父小部件可以自行刷新?

谢谢你。

0 投票
1 回答
224 浏览

flutter - 如何知道是什么触发了我的 Flutter 小部件重建

我已经看到很多关于为什么一个小部件不必要地重建的问题,但我正在寻找一种方法来理解是什么触发了它们。

所以我在视图小部件上放了一个断点,我得到了一个相当大的堆栈(裁剪 - 它大 5 倍):

多次重建视图小部件上的断点

我们应该如何追踪该死的重建起源?

0 投票
0 回答
769 浏览

flutter - changenotifierprovider 是否会处理导航?

我在应用程序页面上初始化Provider

但是当我将 Navigator.push 页面推送到 Page2 时:

它给出错误:

错误:在此消费者小部件上方找不到正确的提供者

我该如何解决这个错误?

0 投票
1 回答
184 浏览

flutter - 如何让Provider和Navigator协同工作?

Provider用于状态管理和与 UI 分离的业务逻辑。

我在Provider上面放了一些,MaterialApp所以可以在应用程序的任何地方访问(例如用户信息)。

但是 您不想将 ChangeNotifierProvider 放置得比必要的高(因为您不想污染范围)。

所以我试着放一些Provider只在小部件树中的某些页面上使用的东西。

例如,在我的购买项目流程中,我可以拥有:SelectItemPage=> ConfirmItemPage=> CheckOutPage

但我的问题是Navigator.push()每次都创建单独的小部件树。因此,如果我在此中初始化 a ProviderSelectItemPage则无法在ConfirmItemPageor中访问CheckOutPage

我想Provider成为这个流程的范围,但我看不出如何。

我该如何解决这个问题?还是我的方法不对?

编辑:我知道我可以使用道具钻孔从SelectItemPage=> ConfirmItemPage=>传递数据,CheckOutPage但这很难维护。我想使用Provider而不是道具钻孔。

0 投票
1 回答
185 浏览

flutter - 尝试添加提供程序以自动从 firestore 更新新用户信息

我制作了一个简单的个人资料页面,其中显示了用户的个人资料图片、姓名和统计信息(全部从 firestore 数据库中提取)。我现在正在尝试实现提供程序,以便在将新集合添加到我的 firestore 数据库时,配置文件页面将自动更新。我在 main.dart 的顶部尝试了以下内容:

我还创建了一个新的 user_model.dart 文件,如下所示:

我尝试过使用各种方法,包括标准提供程序和流提供程序。

我收到运行时错误:'package:provider/src/delegate_widget.dart': Failed assertion: line 228 pos 16: '_builder !=null': is not true。

0 投票
1 回答
3787 浏览

flutter - 跨多个页面保留提供程序数据不起作用

Provider在我的颤振应用程序中使用,当我转到新页面时,Provider在第 2 页中无法访问提供给第 1 页的数据。

我理解这种Provider工作方式的方式是,有一个中心位置可以存储所有数据,并且可以在应用程序的任何位置访问这些数据。所以在我的应用程序中,如下所示,ToDoListManager是存储所有数据的地方。如果我在 中设置数据Page 1,那么我将能够在 中访问该数据Page 2,反之亦然。

如果这不正确,那么哪一部分是错误的?为什么它在我的应用程序中不起作用?

这是代码

第 1 页

第2页

ToDoListProvider

0 投票
1 回答
8247 浏览

flutter - 导航到另一条路线后如何使用 Provider?

我的应用程序有两种类型的用户:管理员和普通用户。我向管理员显示管理屏幕,向普通用户显示普通屏幕。所有用户都需要访问Provider model1。但只有管理员需要访问权限model2

我如何只能model2为管理员用户初始化?

例如:

我只想model2放入AdminScreen. 但是,如果我这样做,其他管理页面将无法访问model2Navigator.push因为它们不是AdminScreen.

感谢帮助!