我无法将数据从 firestore 获取到我的应用程序中
I cannot get the data from the firestore into my application
我是编程新手,当我尝试创建一个小型 TODO 应用程序时,我能够将数据保存到 Cloud firestore 中,但是当我尝试使用 Streambuilder 检索数据时出现了问题。我在 null safety 之前一直在关注旧教程,所以我怀疑问题与 null safety 有关。
该代码在 android 工作室中没有任何错误,但无法检索来自 firestore 的数据。
代码如下:
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class AddTODOlist extends StatelessWidget {
static String id = 'add_todolist';
final TextEditingController _controller = TextEditingController();
void _addUser(){
FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
_controller.text = "";
}
Widget _buildList(QuerySnapshot? snapshot){
return ListView.builder(
itemCount: snapshot!.docs.length,
itemBuilder: (context, index){
final doc = snapshot.docs[index];
final map = (doc.data()as dynamic)['title'];
return ListTile(
title: Text(map,style: TextStyle(color: Colors.black),),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Loan System',),
centerTitle: true,
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
Expanded(
child: TextField(
controller: _controller,
decoration: InputDecoration(
hintText: 'Add new user',
),
),
),
TextButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),
),
onPressed:(){
_addUser();
},
child: Text('Add',
style: TextStyle(
color: Colors.white,
),),
),
],
),
StreamBuilder<QuerySnapshot?>(
stream: FirebaseFirestore.instance.collection('todos').snapshots(),
builder: (context, snapshot){
if(!snapshot.hasData) return LinearProgressIndicator();
else {
return Expanded(
child: _buildList(snapshot.data),
);
}
}
),
],
),
),
),
);
}
}
您的 collection 姓名拼写有误。请记住,Firestore 区分大小写
Todos
对比 todos
FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
这里:
stream: FirebaseFirestore.instance.collection('todos').snapshots(),
如果这没有帮助,请告诉我
我是编程新手,当我尝试创建一个小型 TODO 应用程序时,我能够将数据保存到 Cloud firestore 中,但是当我尝试使用 Streambuilder 检索数据时出现了问题。我在 null safety 之前一直在关注旧教程,所以我怀疑问题与 null safety 有关。 该代码在 android 工作室中没有任何错误,但无法检索来自 firestore 的数据。 代码如下:
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class AddTODOlist extends StatelessWidget {
static String id = 'add_todolist';
final TextEditingController _controller = TextEditingController();
void _addUser(){
FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
_controller.text = "";
}
Widget _buildList(QuerySnapshot? snapshot){
return ListView.builder(
itemCount: snapshot!.docs.length,
itemBuilder: (context, index){
final doc = snapshot.docs[index];
final map = (doc.data()as dynamic)['title'];
return ListTile(
title: Text(map,style: TextStyle(color: Colors.black),),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Loan System',),
centerTitle: true,
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
Expanded(
child: TextField(
controller: _controller,
decoration: InputDecoration(
hintText: 'Add new user',
),
),
),
TextButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),
),
onPressed:(){
_addUser();
},
child: Text('Add',
style: TextStyle(
color: Colors.white,
),),
),
],
),
StreamBuilder<QuerySnapshot?>(
stream: FirebaseFirestore.instance.collection('todos').snapshots(),
builder: (context, snapshot){
if(!snapshot.hasData) return LinearProgressIndicator();
else {
return Expanded(
child: _buildList(snapshot.data),
);
}
}
),
],
),
),
),
);
}
}
您的 collection 姓名拼写有误。请记住,Firestore 区分大小写
Todos
对比 todos
FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
这里:
stream: FirebaseFirestore.instance.collection('todos').snapshots(),
如果这没有帮助,请告诉我