【问题标题】:Flutter: Passing CollectionReferece to StreamFlutter:将 CollectionReferece 传递给 Stream
【发布时间】:2020-10-12 20:45:02
【问题描述】:

我有一个从 Firestore 获取数据的应用程序,我想获取数据并通过 StreamProvider 显示它,我需要在 userAdCollection 中获取 myAds ...它们都在同一个类中。

我收到此错误: 错误:getter 'userAdCollection' 没有为类 'Future' 定义。

class DatabaseService{

    Future addMyAds() async{
    final FirebaseUser user = await _auth.currentUser();
    final CollectionReference userAdCollection = Firestore.instance.collection(user.uid);
    }

    Stream<List<AdModel>> get myAds{
        return addMyAds().userAdCollection.snapshots()
            .map(_adListFromSnapshot);
      }
}

我在这里使用这个类作为 StreamProvider 的值:

return StreamProvider<List<AdModel>>.value(
  value: DatabaseService().myAds,
   Scaffold(
      appBar: AppBar(),
      body: Column(),)
         
           

【问题讨论】:

    标签: flutter dart google-cloud-firestore stream


    【解决方案1】:

    你应该让你的 getter 成为一个返回流的方法,你应该没问题!不要忘记在 .map(_adListFromSnapshot) 之后使用 .toList()

    像这样:

    Stream<List<AdModel>> myAds(){
        return addMyAds().userAdCollection.snapshots()
            .map(_adListFromSnapshot).toList();
      }
    

    【讨论】:

    • 它不起作用并给了我这个错误:错误:getter 'userAdCollection' 没有为类 'Future' 定义。
    • Ottnik 代码仍然是同一个伙伴.. 没有任何改变
    • 我把它从getter改成了method,你可以看看29分钟前的最后一次编辑
    • 我收到 2 个错误:错误:方法必须有明确的参数列表。 (missing_method_parameters at [hpxksa] lib/services/database.dart:123) 错误:getter 'userAdCollection' 没有为类型 'Future' 定义。 (undefined_getter at [hpxksa] lib/services/database.dart:124)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2011-12-11
    • 2015-09-24
    • 2020-02-02
    • 1970-01-01
    • 2012-08-01
    • 2020-03-10
    相关资源
    最近更新 更多