如何使用Flatter中的提供程序获取firebase集合文档详细信息

如何使用Flatter中的提供程序获取firebase集合文档详细信息,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我想将特定文档的firebase文档详细信息提取到列表中,然后根据需要在不同的页面或小部件中使用该列表 这就是我尝试过的。。。我将一个页面命名为Firebasestream,在这里我将文档细节映射到一个列表 import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'pa

我想将特定文档的firebase文档详细信息提取到列表中,然后根据需要在不同的页面或小部件中使用该列表

这就是我尝试过的。。。我将一个页面命名为Firebasestream,在这里我将文档细节映射到一个列表

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:second_app/Cart.dart';

class Firebasestream  {

  final Firestore _firestore = Firestore.instance;
  Stream<List<Cart>> getbooks() {
    return _firestore.collection("users").document("+919954603381").collection("cart").snapshots().map((event) => event.documents
        .map((DocumentSnapshot documentSnapshot)
    => Cart(description: documentSnapshot.data["description"]))
        .toList());

}}
这是我的主课

import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:second_app/Cart.dart';
import 'package:second_app/Firebasestream.dart';
import 'package:second_app/Kaku.dart';


void main() => runApp((MyApp()));




class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  @override
  void initState() {


    // TODO: implement initState
    super.initState();
  }




  //

  @override
  Widget build(BuildContext context) {
    final Firebasestream fs = Firebasestream();

    return StreamProvider(
      create:(BuildContext context)=> fs.getbooks(),
      child: Kaku(),
    );

  }
}



import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:second_app/Cart.dart';

class Kaku extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var list = Provider.of<List<Cart>>(context);
    print(list.length.toString());
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Hii"),
        ),
        body: Container(),
      ),
    );
  }
}
导入“包:provider/provider.dart”; 进口“包装:颤振/材料.省道”; 导入“package:second_app/Cart.dart”; 导入“package:second_app/Firebasestream.dart”; 导入“包:第二个应用程序/Kaku.dart”; void main()=>runApp((MyApp()); 类MyApp扩展了StatefulWidget{ @凌驾 _MyAppState createState()=>\u MyAppState(); } 类MyAppState扩展了状态{ @凌驾 void initState(){ //TODO:实现initState super.initState(); } // @凌驾 小部件构建(构建上下文){ 最终Firebasestream fs=Firebasestream(); 返回流提供程序( create:(BuildContext context)=>fs.getbooks(), 孩子:Kaku(), ); } } 进口“包装:颤振/材料.省道”; 导入“包:provider/provider.dart”; 导入“package:second_app/Cart.dart”; 类Kaku扩展了无状态控件{ @凌驾 小部件构建(构建上下文){ var list=提供者(上下文); 打印(list.length.toString()); 返回材料PP( 家:脚手架( appBar:appBar( 标题:文本(“Hii”), ), 主体:容器(), ), ); } } 但是我得到的名单是空的。。我试图打印列表的长度,但它显示0,而在firebase中有3个文档


你能分享你的收藏/子收藏/文档结构吗?我已经附上谢谢,我不知道用户收藏与购物车收藏有什么关系,你能解释一下吗?如果可能的话,再附上另一个与所述收藏相关的屏幕截图吗?
import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:second_app/Cart.dart';
import 'package:second_app/Firebasestream.dart';
import 'package:second_app/Kaku.dart';


void main() => runApp((MyApp()));




class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  @override
  void initState() {


    // TODO: implement initState
    super.initState();
  }




  //

  @override
  Widget build(BuildContext context) {
    final Firebasestream fs = Firebasestream();

    return StreamProvider(
      create:(BuildContext context)=> fs.getbooks(),
      child: Kaku(),
    );

  }
}



import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:second_app/Cart.dart';

class Kaku extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var list = Provider.of<List<Cart>>(context);
    print(list.length.toString());
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Hii"),
        ),
        body: Container(),
      ),
    );
  }
}