Riverpod StreamProvider错误:位置参数太多:允许1个,但找到2个.请尝试删除多余的位置参数



我正在学习flutter,刚刚更新了应用程序以包含Riverpods。我在一个集合中有一个集合,因此需要传递两个参数。一个被称为localAuthId,另一个被称作orgId。

当我设置Streambuilder时,我收到一个错误,说位置参数太多。

以下是导致问题的片段

**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的一个参数,它运行得很好。

**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();
});**

有人知道我做错了什么吗?

谢谢

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

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));

最新更新