问题标签 [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 投票
2 回答
7428 浏览

flutter - Riverpod:是否有在另一个 StreamProvider 中读取 StreamProvider 的正确方法?

我一直在尝试使用从我的 auth 获得的uid创建流到 Firestore 文档的流Provider

但是,我正在努力实际创建一个StreamProvider依赖于 auth 的值Provider

我还尝试使用Computed返回uid或流本身,但您无法Computed从 a中读取 a Provider(回想起来这很有意义)。

这个问题与这个主题最相关,但它涉及的是 Provider,而不是 Riverpod。

PS 可以创建 Riverpod 标签吗?

编辑:

答案并不完全正确。await for loop仅触发一次,而侦听器捕获所有事件。

此代码在登录时产生以下内容:

然后在注销时:

LISTENED: null

我希望看到uid: null的地方也会更新流,但是在任何更多的身份验证事件中,只有侦听器被触发并且没有事件被await for loop.

有趣的是,使用颤振检查器,auth 提供者发出的值也永远不会改变:

AutoDisposeStreamProvider<FirebaseUser>#95f11: AsyncValue<FirebaseUser>.data(value: FirebaseUser(Instance of 'PlatformUser'))

通过登录/注销事件持续存在,这可以解释这种行为,但我不确定如何修复它。

有任何想法吗?我已经坚持了一段时间,无法纠正这个问题。

0 投票
2 回答
1353 浏览

flutter - Flutter Riverpod:成员“state”只能在“package:state_notifier/state_notifier.dart”的子类的实例成员中使用

我有一个关于切换小部件的简单示例,我希望在单击按钮后显示圆形进度指示器,然后在 3 秒后显示文本。对于我的示例,我使用riverpod_hooksflutter_hooks

加载提供者

主要.dart

但是当我按下按钮时,它不显示 progressIndicator 并且仍然显示文本并且我收到了这个警告:
The member 'state' can only be used within instance members of subclasses of 'package:state_notifier/state_notifier.dart'.

我错过了什么?

我的源代码遵循这样的文档:

在此处输入图像描述

0 投票
3 回答
3044 浏览

flutter - 实施 ChangeNotifier 与 StateNotifier

我对Provider包非常熟悉,并将其与ChangeNotifier.

假设我有 3 个具有不同功能的 getter 和方法:

  1. 切换加载
  2. 切换图像加载
  3. 切换 ObsecurePassword

使用 ChangeNotifer

如果我正在使用ChangeNotifier,我只需要创建 1 个文件并调用类似的方法globalChangeNotifier.METHOD()或类似的值globalChangeNotifier.value

但是现在,我已经了解了Riverpod包,并且在文档中,它使用StateNotifier.

我想将我以前的代码ChangeNotifierStateNotifier. 但据我了解,StateNotifier 只能保存 1 种类型的数据,所以如果我想迁移上面的代码,我应该创建 3 个文件,比方说:

  1. provider_isloading.dart,
  2. provider_isimageloading.dart
  3. provider_obsecurepassword.dart.

使用 StateNotifier

而且我还需要创建 1 个文件来导出所有这些文件:

GlobalStateNotifer.dart

我的问题是,按照我之前的解释,这是最好的做法吗?

我的文件夹结构

我的文件夹结构

0 投票
1 回答
2983 浏览

flutter - Flutter Riverpod:如何实现 FutureProvider?

我使用Flutter Riverpod包来处理 http 请求。我有简单的 Http获取请求来显示来自服务器的所有用户,并且我使用Flutter Riverpod包中的FutureProvider来管理它。

API

用户提供者

设置完成后,我可以像这样调用showAllUser

如果http请求没有必需的参数,那没问题,但是如果我的http请求需要参数,我就遇到了问题。我不知道如何处理这个。

假设,我有另一个 http get来显示来自 id 用户或电子邮件用户的特定用户。然后 API 看起来像:

API

用户提供者

当我使用 userProvider 从 userProvider 访问 idUser 时usrProvider.state.idUser,我收到了这个警告。 The member 'state' can only be used within instance members of subclasses of 'package:state_notifier/state_notifier.dart'.

我的问题与这个问题类似但是在那个问题上我已经知道使用解决了read(userProvider.state),但是在FutureProvider中我无法使用ref(userProvider).

我错过了什么?

0 投票
1 回答
1538 浏览

flutter - 将 ChangeNotifier 从 provider 迁移到 hooks_riverpod

我想将我的整个项目从提供者转移到 Riverpod。但我被困在这一点上。

这是我的子小部件提供程序小部件。它只初始化一次。我怎样才能把这个类写成一个带riverpod的HookWidget?

0 投票
1 回答
4622 浏览

flutter - 使用自定义 ChangeNotifier 初始化riverpod Provider

我只是在试用新的river_pod,颤振状态管理库。我的目标很简单。GestureDetector在主页中监听垂直拖动并相应地更新动画控制器。我想在别的地方听这个动画。我编写了以下代码,它按预期工作。但我不觉得我正在以正确的方式初始化提供程序。

由于创建 的实例需要动画控制器实例AnimationNotifier,因此只能在_controller初始化后完成。所以在 中initState(),我已经初始化了_controlleranimationProvider。这是使用riverpod的正确方法Provider吗?如果不是,可以进行哪些修改?

0 投票
3 回答
440 浏览

flutter - Flutter Riverpod:发布失败

我目前正在尝试使用flutterriverpod学习,但是当我尝试放置flutter_riverpod包时出现问题,我收到了这个错误

我能做些什么来解决这个问题?我试图添加riverpod包,但它也不起作用

0 投票
2 回答
2407 浏览

flutter - 有没有办法在riverpod的提供者中传递参数

如何将 FirebaseAuth 用户传递给 Riverpod 中的 StreamProvider?

使用旧的提供程序包时,我曾经从 FirebaseAuth 获取 user.uid 并将变量传递给 StreamProvider,如果我们可以获得 user.uid,则返回 StreamProvider。

0 投票
1 回答
939 浏览

flutter - Flutter RiverPod:如何将每次运行的后期处理添加到 FutureProvider?

在我的应用程序中,我使用riverpodflutter_tts包来朗读http 响应。首先,我在 FutureProvider 中获取数据后添加它,如下所示:

但即使使用相同的 itemId 多次调用 FutureProvider,它也只是第一次被大声朗读。

其次,我在build方法中添加了它,但是在重建小部件时它总是被大声朗读。

有什么想法可以解决这个问题吗?

完整代码在这里:

0 投票
1 回答
1156 浏览

flutter - 使用 Riverpod Flutter 创建登录功能

我是river_pod的新手,如果我说该文档仅适用于超级高级工程师,我不会撒谎

无论如何,我想sign in使用这个包实现一个功能

它背后的逻辑很简单:-我从用户那里获取电子邮件和密码,然后将loggedIn状态从is 更改falsetrue

这是我的Provider

这是我如何使用它并更改值

我正在使用 context.read 因为我onPressedRaisedButton

现在,这有什么问题是,在将值更改为之后,true我无法flutter重新处理build所有内容并使用新的variable

我怎样才能实现这样的事情?我什至做得对吗?