flutter - 如何使用颤振提供程序从 Firestore 获取数据?
问题描述
我在这里使用 Future Provider 从 firestore 获取数据但它不允许我将初始数据设置为空???它要求我输入一种 . 如何使用未来的 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"),);}
}
解决方案
一个好的解决方案是创建一个包装 DocumentSnapshot 的类,而不是创建 DocumentSnaphot 的 FutureProvider。例如:
class MyClass {
MyClass(){}
Future<DocumentSnapshot> getData() async {
return await FirebaseFirestore.instance.collection("User").doc("xxxx").get();
}
}
在提供者声明中,您可能会设置类似
...
Provider(create: (_) => MyClass())
...
这不需要您设置初始数据。
但是,对于您的情况以及您似乎正在尝试做的事情,使用 StreamProvider 会更好。
有关这方面的更多示例和详细信息,我建议查看以下网站。你会在那里找到更多有用的信息。
推荐阅读
- java - 无法将 Room 设置为使用 RxJava:访问数据库可能会锁定 UI
- php - Laravel 5.6:使用刀片设置变量的最简单方法是什么(不回显它)?
- python - 从网页 API 中抓取数据块
- python - 当我存储一些东西时,Django 复制了我的条目
- ios - Segue 未从自定义 tableView 单元格触发
- c++ - 如何取消长时间运行的 QSqlQuery?
- amazon-web-services - 将 Power BI 连接到 S3 存储桶
- python - Python 如果条件没有按预期工作
- python - 熊猫打开 json 文件 JSON -ValueError: Expected object or value
- java - 尝试调用虚拟方法“java.lang.CharSequence android.widget.TextView.getText()”