问题标签 [riverpod]
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 - Riverpod 条件提供程序状态更新
我正在将我的应用程序移植到river_pod,到目前为止一切都很好,但我总是偶然发现同样的问题。在某些情况下,我需要提供者仅根据ref.watch
.
这方面的一个例子是我的最后一个路障:
我有一个公开当前用户位置的 ChangeNotifier 提供程序。此提供程序由多个其他提供程序侦听。其中之一是 FutureProvider,它会在每次位置更改时获取附近的热门帖子。这里的问题是这个位置更新非常频繁(每 10 秒左右),所以这个获取完成了非常不必要的时间。
在这种情况下,我想做的是,在这个 FutureProvider 中,能够获得新位置,但只能有条件地更新(这里的条件是,如果最后一次提取是在 1 公里以外完成的)以避免这种不必要的网络调用和它导致的所有底层 UI 更新。
这意味着两件事,可以访问最后一个状态以进行比较,并且能够取消更新(因为即使我不执行获取并返回最后一个值,UI 仍会将其读取为更新)。
我知道这些机制不是内置的,所以我想知道,river_pod 是解决这个问题的方法吗?
干杯!
flutter - Flutter Riverpod 设计模式(禁止垃圾回收)
我编写了一个 Swift/IOS 包来外部化和标准化我所有的 Social/Federated/Firebase 身份验证样板(SDK 和 UI)。我已经把它移植到 Flutter 作为一个学习练习......但也允许通过 config.in 传入自定义 UI。
由于我是 Flutter 和 Riverpod 的新手,恐怕我会犯一些严重的错误,并且希望在我深入之前得到各位专家的反馈。
该软件包称为“社交登录助手”或 SLH,这是我想要的公共 API:
从上面可以看出,根目录下的 State/Stream 构建器绝不能被垃圾收集或清除。我不清楚 Riverpod 是否以及何时处置我的提供者,或者 Dart 本身是否会收集必须保持不朽的对象。我也不确定是使用 StreamProvider 还是 State 提供者?
正如你在下面看到的,我故意制造了一个内存泄漏(死锁)来保护我。我确定这是一种反模式,但作为新手,我不确定如何保证不朽。
欢迎所有指导和明确的反馈。
我希望在 Riverpod 文档中看到的一项改进是,在没有主动侦听器的情况下,提供者在自我处置/垃圾收集之前能够存活多久。
啊,看起来我可以继承 AlwaysAliveProviderBase() 以实现相同的目标......我会对此进行试验。
flutter - 如何在没有 ConsumerWidget 或 HookWidget 的情况下在构建外部访问 Riverpod StateNotifier 状态?
我有这堂课:
并且想要访问扩展我不想(/知道如何)更改的 StatefullWidget 的类中的状态。所以我不能用'with'来扩展'ConsumerWidget'或'HookWidget'。我如何获得这堂课的状态?
新手问题,我知道,但非常感谢一些帮助。
flutter - Riverpod - 合并提供商时出现问题
我正在尝试使用 Riverpod 状态管理来组合提供者。在这种情况下,我正在创建一个视图模型,其中包含一个从该视图模型类中检索未来的函数。当我尝试从 VM 加载国家数据时,显示以下错误:
“'package:flutter_hooks/src/framework.dart':断言失败:第 489 行 pos 7:'!_debugIsInitHook':无法监听 HookState.initState 中继承的小部件。请改用 HookState.build”。
测试屏幕代码:
测试视图模型代码:
flutter - 计数器应用程序之外的简单 Riverpod 示例:两个单元格的总和
我正在学习 Flutter,但我被困在状态管理上。我看了一下 Riverpod,它看起来很有希望,但我很难超越柜台应用程序来做一些更复杂的事情。
例如,我想要两个收集数字的 TextField,以及另一个 Text 小部件来显示两个 TextField 值的总和。这就是我所拥有的。
文本小部件不会更新。有什么建议吗?
非常感谢,托尼
flutter - 如何在不传递参数的情况下使用riverpod 系列提供程序
有没有办法访问提供的“ .family
”更改通知器的实例(已经实例化,传递正确的参数)而无需再次传递参数?
在供应商
当您创建 ChangeNotifier 的提供者(需要参数)时,您可以获得与它提供的相同的更改通知Provider.of<ChangeNotif>(context)
;
使用正确的参数创建提供程序后,您可以在该小部件树的任何位置获取它提供的任何内容,而无需任何语法,例如Provider.of<ChangeNotif("dash")>(context)
but Provider.of<ChangeNotif>(context)
。
在河边
由于在获取它的实例时必须将参数传递给提供者,因此我必须将提供者分配给一个变量,以便将其传递给需要提供者提供的更改通知器的子代。
有没有办法在_changeNotif
不将其作为参数传递给子小部件的情况下获得实例化?有什么方法可以在另一个不是 A 子级的小部件中获取相同的 _changeNotif 实例(例如Provider.of<ChangeNotif>(context)
在 Provider 中使用而无需传递新参数)?
flutter - 像工厂一样使用 Provider
我可以Provider
像工厂构造函数一样在颤振中使用吗?我想watch
和我read
的dispose
对象
目前要观看我们可以使用的值context.watch<MyValue>()
,我想观看多个实例,MyValue
我想知道提供者可以为我做吗?
我需要类似的东西
如果Provider
做不到,我该如何实现它,或者是否有另一个库?
flutter - Stream 构建一堆 Widget
因此,我使用流来跟踪用户的身份验证状态。这是我的设置,到目前为止效果很好。
问题是,流多次构建 UI。我的产品页面中有一个欢迎对话框,它会打开多次,一旦我启动应用程序,它就会变得一团糟。
我应该怎么做才能避免这种情况?
** 这里我使用的是riverpod包
flutter - Flutter Firestore _MapStream不是 Stream 的子类型
经过数小时的挣扎和浏览,我需要您的帮助。
我在一个实施了 Firestore 的颤振项目上。我在使用 Riverpod 的 mvvm 架构上。
我的firestore服务有这个代码:
我用这个提供者访问这个 FirestoreService :
在我的 CustomerProfileViewModel 上,我得到了这个:
最后,在作为 ConsumerWidget 的 CustomerProfileView 中,我这样称呼我的模型:
并像这样设置了我的 StreamBuilder
然后我得到这个错误:
它使用 Future 进行所有相同的工作,使用 collection('customers').doc(uid).get() 查询并使用 FutureBuilder 构建它。
请帮助我,我从未见过这种 MapStream 类型,互联网也没有(经过数小时的搜索)。
谢谢阅读 !
flutter - 如果您使用 dart only 包(riverpod)或如何在没有上下文的情况下使用 Provider,如何收听更改?
我正在学习颤振,如果我得到一个聆听 dart only package aka riverpod 变化的例子,那将很容易理解。我在没有无状态或有状态小部件(基本上没有 Buildcontext)的类中使用 Provider。
所以我像这样将其他类的上下文传递给这个类,虽然它有效,但我觉得它不是正确的方法。
然后我遇到了riverpod,其中仅dart包不需要上下文,但我很困惑,因为我无法找到ProviderScope之类的东西。我也搜索了示例,但其中大多数都在flutter_riverpod上,而不是在riverpod上。
pub.dev 上的这个例子正在使用 FutureProvider 如果我只想从模型中获取怎么办
我的意思是模型
所以这里有问题
1.这是使用上下文的适当方式
2.有没有其他方法可以实现这一点 3.我可以
得到一个简单的例子,比如 CounterApp 显示读取和观看吗?