微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

multiprovider-将值从第一提供商传递给第二提供商

如何解决multiprovider-将值从第一提供商传递给第二提供商

我正在尝试设置MultiProvider,但是我正在努力弄清楚如何将一个值传递给另一个我有一个包含用户ID的数据列表,我的应用程序以前会为用户信息创建一个StreamProvider,然后为数据列表创建另一个。很好,因为我可以将user.uid传递给数据,然后应用过滤器。像这样...

final user = Provider.of<User>(context);

    return StreamProvider<List<UserLevelTwo>>.value(
      value: DatabaseService(uid: user.uid).levelTwoSelector,

问题是我无法在整个应用程序中访问列表,因此在研究它之后,它似乎应该与其他提供者一起放在MaterialApp之前。我已经有了这个设置,但是只有手动传递了UID。

Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StreamProvider<User>.value(value: AuthService().user),StreamProvider<List<UserLevelTwo>>.value(value: DatabaseService(uid: 'rgDe5I0QgFfa123mIgxo8VQew9T2').levelTwoSelector),],child: MaterialApp(

我需要帮助的是如何将uid从第一个提供程序传递到第二个提供程序?

第二个streamprovider调用我的数据库服务,如下所示:

class DatabaseService {
  final String uid;
  DatabaseService({this.uid});

  Query getLevelTwoSelectorData(){
    return Firestore.instance.collection('ULTs')
        .where("UserID",isEqualTo: uid)
        .where("D",isEqualTo: false)
        .orderBy("R",descending: true)
        .orderBy("Desc");
  }

  Stream<List<UserLevelTwo>> get levelTwoSelector {
    return getLevelTwoSelectorData().snapshots().map(_userLevelTwoListFromSnapshot);
  }
}

如果有人可以帮助我,将不胜感激!

谢谢

解决方法

感谢您的帮助。通过使用此处介绍的Pass user uid to Firestore stream query in Flutter

相同的方法,我可以使用此方法

或多或少,似乎您有一个StreamProvider用于提供用户信息,然后一旦它不为null,就会使用原始提供者的uid为该列表创建一个多提供程序。

再次感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。