【问题标题】:Firebase subcollection documents in flutterFlutter 中的 Firebase 子集合文档
【发布时间】:2020-08-28 20:39:05
【问题描述】:

我有一个 usersData 集合,其中有一个 User.uid 文档,它有一个 Reminders 集合。 (在屏幕截图中)我正在尝试获取此集合的流并输出到 Flutter。但一个空虚出来了。

final CollectionReference usersCollection = Firestore.instance.collection('usersData');

获取收藏

Stream<List<Reminder>> get reminders {
return usersCollection.document(uid).collection('reminders').snapshots().map(_remListFromSnapshot);}

映射

List<Reminder> _remListFromSnapshot(QuerySnapshot snapshot){
//print(snapshot.toString());
return snapshot.documents.map((doc)
{
  print("Test " + doc.data['description']);
  return Reminder(
    description: doc.data['description'] ?? '',
  );
}).toList();
}

元素的小部件

final Reminder reminder;
ReminderTile({this.reminder});

Widget build(BuildContext context) {
print("Here " + reminder.description);
return Padding(
  padding: EdgeInsets.only(top: 8.0),
  child: Card(
    margin: EdgeInsets.fromLTRB(20, 6, 20, 0),
    child: ListTile(
      leading: CircleAvatar(
        //backgroundImage: AssetImage('assets/coffee_icon.png'),
        radius: 25.0,
        backgroundColor: Colors.brown[300],
      ),
      title: Text(reminder.description),
    ),
  ),
);
}

和列表小部件

class RemList extends StatefulWidget {
@override
_RemListState createState() => _RemListState();
}

class _RemListState extends State<RemList> {
@override
Widget build(BuildContext context) {

final reminders = Provider.of<List<Reminder>>(context) ?? [];

return ListView.builder(
  itemCount: reminders.length,
  itemBuilder: (context, index) {
    return ReminderTile(reminder: reminders[index]);
  },
);
}
}

【问题讨论】:

  • 控制台是否打印:“测试您的文档数据”
  • 不,没有这样的打印

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

您缺少监听方法。

您可以通过以下方式使用listen方法:

Stream<List<Reminder>> get reminders {
return usersCollection.document(uid).collection('reminders')
  .snapshots()
  .listen(_remListFromSnapshot);
}

Here 是另一个 Stackoverflow,其状态与之前相同。

让我知道它是否适合你。

【讨论】:

  • 不,这不是工作错误:无法从函数“reminders”返回“StreamSubscription”类型的值,因为它的返回类型为“Stream>” .
【解决方案2】:

你应该做的是 ...snapshots().listen(_remListFromSnapshot);

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 2020-12-02
    • 2022-01-19
    • 2021-04-08
    • 2020-03-19
    • 1970-01-01
    • 2020-12-19
    • 2020-01-05
    相关资源
    最近更新 更多