【问题标题】:Riverpod StreamProvider Error: Too many positional arguments: 1 allowed, but 2 found. Try removing the extra positional argumentsRiverpod StreamProvider 错误:位置参数太多:允许 1 个,但找到了 2 个。尝试删除额外的位置参数
【发布时间】:2021-01-12 10:30:23
【问题描述】:

我正在学习 Flutter,并且刚刚更新了应用程序以包含 Riverpods。我在集合中有一个集合,因此需要传递两个参数。一个叫做 localAuthId,另一个叫做 orgId。

当我设置 Streambuilder 时,我收到一条错误消息,提示位置参数太多。

这是似乎导致问题的 sn-p

**final orgStreamProvider =
StreamProvider.autoDispose.family<Org, String>((ref, localAuthId, orgId) {
  final database = ref.watch(databaseProvider);
  return database != null && localAuthId != null && orgId !=null
      ? database.orgDocStream(localAuthId: localAuthId, orgId: orgId)
      : const Stream.empty();
})**

当我在顶级集合上运行以下命令时,即只使用 localAuthId 的 1 个参数,它就可以正常工作。

**final orgStreamProvider =
StreamProvider.autoDispose.family<Org, String>((ref, localAuthId) {
  final database = ref.watch(databaseProvider);
  return database != null && localAuthId != null
      ? database.orgDocStream(localAuthId: localAuthId)
      : const Stream.empty();
});**

请问有人知道我有什么问题吗?

谢谢

【问题讨论】:

    标签: flutter provider stream-builder riverpod


    【解决方案1】:

    到目前为止,您只能使用 Riverpod 的 family 向提供者传递一个值。最好创建一个具有两个属性的类并将对象传递给提供者。

    class Auth {
      Auth({
        @required this.localAuthId,
        @required this.orgId,
      });
      final String localAuthId;
      final String orgId;
    }
    
    final auth = Auth(localAuthId: 'abc', orgId: 'abc1234');
    
    final orgStreamProvider = StreamProvider.autoDispose.family<Org, Auth>((ref, auth) {
      final database = ref.watch(databaseProvider);
      return database != null && auth.localAuthId != null && auth.orgId !=null
        ? database.orgDocStream(localAuthId: auth.localAuthId, orgId: auth.orgId)
        : const Stream.empty();
    })
    

    hooks_riverpod

    final orgProvider = useProvider(orgStreamProvider(auth));
    

    【讨论】:

    • 非常感谢您对此的帮助。不幸的是,我尝试了这个,但仍然无法让它工作,所以我采用了另一种方法。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2021-09-21
    • 2022-07-20
    • 2022-01-19
    相关资源
    最近更新 更多