我正在嘗試檢索我的集合中的所有欄位,但我只能檢索集合中的一個欄位,personalinfo而不是集合的全部內容。有沒有辦法檢索集合中的所有欄位personalinfo?
這是我將資料保存到云 Firestore 資料庫的代碼
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:grocery_shopping/pages/order_successful/order_successful.dart';
class PersonalInformation extends StatelessWidget {
PersonalInformation ({Key? key}) : super(key: key);
TextEditingController fullname = new TextEditingController();
TextEditingController address = new TextEditingController();
TextEditingController city = new TextEditingController();
TextEditingController zipcode = new TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Checkout")),
body: Container(
padding: EdgeInsets.all(40.0),
child: Center(
child: Column(
children: [
TextFormField(
controller: fullname,
decoration: InputDecoration(
hintText: "Full Name"
),
),
SizedBox(
height: 10.0,
),
TextFormField(
controller: address,
decoration: InputDecoration(
hintText: "Address"
),
),
SizedBox(
height: 10.0,
),
TextFormField(
controller: city,
decoration: InputDecoration(
hintText: "City"
),
),
SizedBox(
height: 10.0,
),
TextFormField(
controller: zipcode,
decoration: InputDecoration(
hintText: "Zipcode"
),
),
SizedBox(
height: 10.0,
),
TextButton(
onPressed: (){
Map <String,dynamic> data= {"field1": fullname.text,"field2": address.text,"field3": city.text, "field4": zipcode.text};
FirebaseFirestore.instance.collection("personalinfo").add(data);
} ,
child: Text("Submit"),
),
TextButton(
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context)=> OrderSuccessful()));
},
child: Text("Continue"),
),
ElevatedButton(
onPressed: () => Get.to(() => OrderSuccessful()),
child: Text('Continue'),
),
],
),
),
)
);
}
}
這是我在 Cloud Firestore 資料庫中檢索資料的代碼
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class OrderSuccessful extends StatefulWidget {
@override
_OrderSuccessfulState createState() => _OrderSuccessfulState();
}
class _OrderSuccessfulState extends State<OrderSuccessful>{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Order Successful")),
resizeToAvoidBottomInset: true,
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('personalinfo').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if (!snapshot.hasData){
return Text("no value");
}
return ListView(
children: snapshot.data!.docs.map((document){
return Text(document['field1']);
}).toList(),
);
},
),
);
}
}
uj5u.com熱心網友回復:
如果您能夠訪問一個欄位,則意味著您也可以訪問其余欄位。
如果document['field1']有效,那么您可以撰寫document['field2']以獲取第二個欄位等等。
class _OrderSuccessfulState extends State<OrderSuccessful>{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Order Successful")),
resizeToAvoidBottomInset: true,
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('personalinfo').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if (!snapshot.hasData){
return Text("no value");
}
return ListView(
children: snapshot.data!.docs.map((document){
// You can use a different widget like ListTile here if you want
return Text(document['field1'] " " document['field2'] " " document['field3'] " " document['field4']);
}).toList(),
);
},
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/484120.html
