问题标签 [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.
flutter - 如何设置同一个 ChangeNotifier 的多个 ChangeNotifierProvider?
我有一个扩展类ChangeNotifier
,如下所示:
addListNovelByCategoryID
将根据id
参数调用后端 API,参数表示类别 id。而且我有 14 个类别,所以我需要 14 个单独的列表,它们有自己的数据并将它们放入TabBarView
.
我打算设置多个ChangeNotifierProvider<NovelNotifier>
,但不知道如何或是否Provider
支持这种情况。
flutter - 如何在 Flutter 的单例中使用 Provider.of(...)?
我在widget
小部件树的深处有这个:
TimersModel
获取上下文:
NotificationsService
并第一次也是唯一一次实例化这个单例:
如您所见,这是一个单例FlutterLocalNotificationsPlugin
问题是,如果我Provider.of<TimersModel>(context)...
从这个单例中调用,虽然它得到了正确的上下文,但它总是抛出ProviderNotFoundError
.
如果我在提供者的这段代码上放置一个断点:
上下文ChangeNotifierProvider
和类型TimersModel
是正确的。但提供者始终为空。
我知道单例不是小部件,当然,它不在小部件树中。
Provider.of<TimersModel>(context)...
但是,只要我提供正确的上下文和类型,我就不能从任何地方调用吗?
或者这应该起作用而我做错了什么?
flutter - StreamProvider 不更新列表
我有一个 StreamController 应该更新 aList
但它没有发生:
当我打电话时,updateGeofences
我在日志中有很多地理围栏。但是小部件没有重建!
这是我的提供商设置:
当我直接从我的服务中收听时
流发出新数据......但不是在 StreamProvider:updateShouldNotify
中:从未被调用(我没有运气尝试过这个答案的解决方案)
以下是我查看数据的方式:
但是这个列表仍然是空的。
我有另一个带有简单 Map 的 StreamController 可以完美运行。怎么了?
flutter - 使用flutter-provider从子小部件更新父小部件
如何使用更新子小部件的父小部件的onTap
状态provider
目前我正在做的是将一个函数从父级传递给子级,该setState()
函数在父级结束时调用该函数(请参阅下面的伪代码),但我正在寻找一种更强大的方法来做到这一点。
这是我可以表示问题的最简单方法,setState()
在父级(在实际代码中)强制父级小部件更新其视图。
在实际代码中,我让子小部件处理数据库查询,单击子小部件会更改数据库中的值,这些值将由父小部件更新。因此,当我单击子小部件时,它会更新 db,然后调用 db notifyParent()
,然后导致父级再次查询 db 并更新视图。
在不使用提供程序的情况下,有没有更好的方法来做到这一点setState()
?如何使用 say aChangeNotifierProvider
通知数据库更改?或者有什么方法可以在数据库中的某些内容发生更改时通知父小部件,以便父小部件可以自行刷新?
谢谢你。
flutter - changenotifierprovider 是否会处理导航?
我在应用程序页面上初始化Provider
:
但是当我将 Navigator.push 页面推送到 Page2 时:
它给出错误:
错误:在此消费者小部件上方找不到正确的提供者
我该如何解决这个错误?
flutter - 如何让Provider和Navigator协同工作?
我Provider
用于状态管理和与 UI 分离的业务逻辑。
我在Provider
上面放了一些,MaterialApp
所以可以在应用程序的任何地方访问(例如用户信息)。
但是 您不想将 ChangeNotifierProvider 放置得比必要的高(因为您不想污染范围)。
所以我试着放一些Provider
只在小部件树中的某些页面上使用的东西。
例如,在我的购买项目流程中,我可以拥有:SelectItemPage
=> ConfirmItemPage
=> CheckOutPage
。
但我的问题是Navigator.push()
每次都创建单独的小部件树。因此,如果我在此中初始化 a Provider
,SelectItemPage
则无法在ConfirmItemPage
or中访问CheckOutPage
。
我想Provider
成为这个流程的范围,但我看不出如何。
我该如何解决这个问题?还是我的方法不对?
编辑:我知道我可以使用道具钻孔从SelectItemPage
=> ConfirmItemPage
=>传递数据,CheckOutPage
但这很难维护。我想使用Provider
而不是道具钻孔。
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。
flutter - 跨多个页面保留提供程序数据不起作用
我Provider
在我的颤振应用程序中使用,当我转到新页面时,Provider
在第 2 页中无法访问提供给第 1 页的数据。
我理解这种Provider
工作方式的方式是,有一个中心位置可以存储所有数据,并且可以在应用程序的任何位置访问这些数据。所以在我的应用程序中,如下所示,ToDoListManager
是存储所有数据的地方。如果我在 中设置数据Page 1
,那么我将能够在 中访问该数据Page 2
,反之亦然。
如果这不正确,那么哪一部分是错误的?为什么它在我的应用程序中不起作用?
这是代码
第 1 页
第2页
ToDoListProvider
flutter - 导航到另一条路线后如何使用 Provider?
我的应用程序有两种类型的用户:管理员和普通用户。我向管理员显示管理屏幕,向普通用户显示普通屏幕。所有用户都需要访问Provider
model1
。但只有管理员需要访问权限model2
。
我如何只能model2
为管理员用户初始化?
例如:
我只想model2
放入AdminScreen
. 但是,如果我这样做,其他管理页面将无法访问model2
,Navigator.push
因为它们不是AdminScreen
.
感谢帮助!