如何使用 flutter provider 从 Firestore 获取数据?
How can I use flutter provider to get data from Firestore?
我在这里使用 Future Provider 从 firestore 获取数据但是它不允许我将初始数据设置为空???它要求我输入一种 .如何使用 future Provider 从 firestore 获取数据。
class MyHomePage extends StatelessWidget {
final _auth = FirebaseAuth.instance;
@override
Widget build(BuildContext context) {
return FutureProvider<DocumentSnapshot>(create: (_)async{
return FirebaseFirestore.instance.collection("User").doc("xxxx").get();}, initialData: ,child: Welcome,)
}}
Widget Welcome (BuildContext context){
final document = Provider.of<DocumentSnapshot>(context).data;
if(document==null){
return Container(
child: Text("Loading"),);}
}
与其创建 DocumentSnaphot 的 FutureProvider,不如创建一个 class 来包装 DocumentSnapshot。例如:
class MyClass {
MyClass(){}
Future<DocumentSnapshot> getData() async {
return await FirebaseFirestore.instance.collection("User").doc("xxxx").get();
}
}
并且在提供者声明中,您可以设置类似
的内容
...
Provider(create: (_) => MyClass())
...
这不需要您设置初始数据。
但是,对于您的情况以及您正在尝试做的事情,使用 StreamProvider 会更好。
有关这方面的更多示例和详细信息,我建议查看以下网站。您会在那里找到更多有用的信息。
我在这里使用 Future Provider 从 firestore 获取数据但是它不允许我将初始数据设置为空???它要求我输入一种 .如何使用 future Provider 从 firestore 获取数据。
class MyHomePage extends StatelessWidget {
final _auth = FirebaseAuth.instance;
@override
Widget build(BuildContext context) {
return FutureProvider<DocumentSnapshot>(create: (_)async{
return FirebaseFirestore.instance.collection("User").doc("xxxx").get();}, initialData: ,child: Welcome,)
}}
Widget Welcome (BuildContext context){
final document = Provider.of<DocumentSnapshot>(context).data;
if(document==null){
return Container(
child: Text("Loading"),);}
}
与其创建 DocumentSnaphot 的 FutureProvider,不如创建一个 class 来包装 DocumentSnapshot。例如:
class MyClass {
MyClass(){}
Future<DocumentSnapshot> getData() async {
return await FirebaseFirestore.instance.collection("User").doc("xxxx").get();
}
}
并且在提供者声明中,您可以设置类似
的内容 ...
Provider(create: (_) => MyClass())
...
这不需要您设置初始数据。
但是,对于您的情况以及您正在尝试做的事情,使用 StreamProvider 会更好。
有关这方面的更多示例和详细信息,我建议查看以下网站。您会在那里找到更多有用的信息。