问题标签 [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.

0 投票
1 回答
189 浏览

flutter - Riverpod 条件提供程序状态更新

我正在将我的应用程序移植到river_pod,到目前为止一切都很好,但我总是偶然发现同样的问题。在某些情况下,我需要提供者仅根据ref.watch.

这方面的一个例子是我的最后一个路障:

我有一个公开当前用户位置的 ChangeNotifier 提供程序。此提供程序由多个其他提供程序侦听。其中之一是 FutureProvider,它会在每次位置更改时获取附近的热门帖子。这里的问题是这个位置更新非常频繁(每 10 秒左右),所以这个获取完成了非常不必要的时间。

在这种情况下,我想做的是,在这个 FutureProvider 中,能够获得新位置,但只能有条件地更新(这里的条件是,如果最后一次提取是在 1 公里以外完成的)以避免这种不必要的网络调用和它导致的所有底层 UI 更新。

这意味着两件事,可以访问最后一个状态以进行比较,并且能够取消更新(因为即使我不执行获取并返回最后一个值,UI 仍会将其读取为更新)。

我知道这些机制不是内置的,所以我想知道,river_pod 是解决这个问题的方法吗?

干杯!

0 投票
1 回答
896 浏览

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() 以实现相同的目标......我会对此进行试验。

0 投票
2 回答
525 浏览

flutter - 如何在没有 ConsumerWidget 或 HookWidget 的情况下在构建外部访问 Riverpod StateNotifier 状态?

我有这堂课:

并且想要访问扩展我不想(/知道如何)更改的 StatefullWidget 的类中的状态。所以我不能用'with'来扩展'ConsumerWidget'或'HookWidget'。我如何获得这堂课的状态?

新手问题,我知道,但非常感谢一些帮助。

0 投票
1 回答
1177 浏览

flutter - Riverpod - 合并提供商时出现问题

我正在尝试使用 Riverpod 状态管理来组合提供者。在这种情况下,我正在创建一个视图模型,其中包含一个从该视图模型类中检索未来的函数。当我尝试从 VM 加载国家数据时,显示以下错误:

“'package:flutter_hooks/src/framework.dart':断言失败:第 489 行 pos 7:'!_debugIsInitHook':无法监听 HookState.initState 中继承的小部件。请改用 HookState.build”。

测试屏幕代码:

测试视图模型代码:

0 投票
1 回答
413 浏览

flutter - 计数器应用程序之外的简单 Riverpod 示例:两个单元格的总和

我正在学习 Flutter,但我被困在状态管理上。我看了一下 Riverpod,它看起来很有希望,但我很难超越柜台应用程序来做一些更复杂的事情。

例如,我想要两个收集数字的 TextField,以及另一个 Text 小部件来显示两个 TextField 值的总和。这就是我所拥有的。

文本小部件不会更新。有什么建议吗?

非常感谢,托尼

0 投票
2 回答
2660 浏览

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 中使用而无需传递新参数)?

0 投票
1 回答
143 浏览

flutter - 像工厂一样使用 Provider

我可以Provider像工厂构造函数一样在颤振中使用吗?我想watch和我readdispose对象

目前要观看我们可以使用的值context.watch<MyValue>(),我想观看多个实例,MyValue我想知道提供者可以为我做吗?

我需要类似的东西

如果Provider做不到,我该如何实现它,或者是否有另一个库?

0 投票
1 回答
34 浏览

flutter - Stream 构建一堆 Widget

因此,我使用流来跟踪用户的身份验证状态。这是我的设置,到目前为止效果很好。

问题是,流多次构建 UI。我的产品页面中有一个欢迎对话框,它会打开多次,一旦我启动应用程序,它就会变得一团糟。

我应该怎么做才能避免这种情况?

** 这里我使用的是riverpod包

0 投票
2 回答
813 浏览

flutter - Flutter Firestore _MapStream不是 Stream 的子类型

经过数小时的挣扎和浏览,我需要您的帮助。

我在一个实施了 Firestore 的颤振项目上。我在使用 Riverpod 的 mvvm 架构上。

我的firestore服务有这个代码:

我用这个提供者访问这个 FirestoreService :

在我的 CustomerProfileViewModel 上,我得到了这个:

最后,在作为 ConsumerWidget 的 CustomerProfileView 中,我这样称呼我的模型:

并像这样设置了我的 StreamBuilder

然后我得到这个错误:

它使用 Future 进行所有相同的工作,使用 collection('customers').doc(uid).get() 查询并使用 FutureBuilder 构建它。

请帮助我,我从未见过这种 MapStream 类型,互联网也没有(经过数小时的搜索)。

谢谢阅读 !

0 投票
2 回答
942 浏览

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 显示读取和观看吗?