我是編程新手,當我嘗試創建一個小型 TODO 應用程式時,我能夠將資料保存到 Cloud Firestore 中,但是當我嘗試使用 Streambuilder 檢索資料時出現了問題。我在空安全之前遵循舊教程,所以我懷疑問題與空安全有關。該代碼在 android studio 中沒有任何錯誤,但無法檢索來自 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),
);
}
}
),
],
),
),
),
);
}
}
uj5u.com熱心網友回復:
集合名稱的拼寫有誤。請記住,Firestore 區分大小寫
Todos 對比 todos
FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
和這里:
stream: FirebaseFirestore.instance.collection('todos').snapshots(),
如果這沒有幫助,請告訴我
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335009.html
標籤:扑 镖 谷歌云firestore 流构建器
