首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从文档快照中获取特定字段

如何从文档快照中获取特定字段
EN

Stack Overflow用户
提问于 2021-08-31 17:29:27
回答 1查看 113关注 0票数 0

我有我想要获取字段的集合。我遵循了flutter fire的说明,它告诉我使用get()来检索文档快照。我正在创建一个documentsnapshot对象,并尝试获取给定id的所有内容。现在,我正在尝试将这个流传递给streambuilder并显示特定的字段。但是我得到了错误;

代码语言:javascript
运行
复制
type '_BroadcastStream<DocumentSnapshot<Map<String, dynamic>>>' is not a subtype of 
type
'Stream<QuerySnapshot<Object?>>?'

我的代码是;

代码语言:javascript
运行
复制
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:quicktodo/model/authservice.dart';

class events extends StatefulWidget {
analytics({Key? key}) : super(key: key);
String uida = FirebaseAuth.instance.currentUser!.uid;

@override
_analyticsState createState() => _analyticsState();
}

class _ eventsState extends State<analytics> {

 late final _stream;
String uid = FirebaseAuth.instance.currentUser!.uid;

void initState() {
super.initState();


setState(() {
  _stream =   FirebaseFirestore.instance.collection('events').doc(uid).get();
});
}




@override
Widget build(BuildContext context) {

final authService = Provider.of<AuthClass>(context);
return Scaffold(
  appBar:AppBar(
    leading:
    IconButton(
      icon: Icon(Icons.logout),
      tooltip: 'List of your activities',
      onPressed: () {
        authService.signout(
        );
      },
    ),

    title: const Text('Activity list'),
    actions: <Widget>[
      IconButton(
        icon: const Icon(Icons.add),
        tooltip: 'List of your activities',
        onPressed: () {
        },
      ),
    ],
  ),
  body: StreamBuilder(
    stream: _stream,
    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
      if (snapshot.hasError) {
        return Text('Something went wrong');
      }

      if (snapshot.connectionState == ConnectionState.waiting) {
        return Text("Loading");
      }

      return ListView(
        children: snapshot.data!.docs.map((DocumentSnapshot document) {
          // final trip = DataModel.fromSnapshot(document);
          Map a = document.data() as Map<String, dynamic>;

          a['id'] = document.id;
          return Container(
            child: Text(a['eventone']),
          );
        }).toList(),
      );


    },

  ),

);

}

}

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 18:00:23

用下面的代码替换你的流生成器:

代码语言:javascript
运行
复制
return StreamBuilder(
  stream: FirebaseFirestore.instance
      .collection('events')
      .doc(uid)
      .snapshots(),
  builder:
      (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
    if (snapshot.hasError) return Text('Something went wrong');
    if (snapshot.connectionState == ConnectionState.waiting)
      return Text("Loading");

    Map data = snapshot.data.data();
    print(data['eventide']); // should print 4
    print(data['eventtwo']); // should print 5
    return SizedBox();
  },
);

我更改了您的初始流构建器,因为它只适用于集合快照,而不适用于文档快照。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69003031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档