如何使用Flatter中的提供程序获取firebase集合文档详细信息
我想将特定文档的firebase文档详细信息提取到列表中,然后根据需要在不同的页面或小部件中使用该列表 这就是我尝试过的。。。我将一个页面命名为Firebasestream,在这里我将文档细节映射到一个列表如何使用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
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(),
),
);
}
}