我当前尝试从 firestore firebase 读取数据,但是它没有在控制台中显示任何错误,也没有在屏幕上显示任何数据。有人知道哪个部分出了问题,请帮我解决问题或指出错误吗?感谢这些帮助,谢谢。
代码:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
class CarDetails extends StatefulWidget {
const CarDetails({super.key});
@override
State<CarDetails> createState() => _CarDetailsState();
}
class _CarDetailsState extends State<CarDetails> {
final db = FirebaseFirestore.instance;
final currentUser = FirebaseAuth.instance.currentUser!;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
backgroundColor: Colors.grey[100],
appBar: AppBar(
title: const Text(
"Car Details",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20,
),
),
centerTitle: true,
),
drawer: const DrawerListBar(),
body: StreamBuilder<QuerySnapshot>(
stream: db
.collection(currentUser.uid)
.doc()
.collection("vehicle details")
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
{
return ListView.builder(
itemCount: snapshot.data!.docs.length,
// shrinkWrap: true,
itemBuilder: (context, index) {
var carDetails = snapshot.data!.docs[index];
return GestureDetector(
onTap: () {},
child: Container(
margin: const EdgeInsets.only(bottom: 20),
child: Stack(
children: [
const SizedBox(height: 20),
Container(
width: double.infinity,
margin: const EdgeInsets.only(
left: 24, right: 24, top: 50),
padding: const EdgeInsets.only(
left: 25, bottom: 15, right: 20, top: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: const Color(0xFF203e5a),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
carDetails["number plate"],
style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
color: Colors.white,
),
),
const Text(
"price/hr",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
color: Colors.white,
),
),
const SizedBox(height: 15),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
CarItems(
name: "Brand",
value: carDetails["brand"]),
CarItems(
name: "Model",
value: carDetails["model"]),
CarItems(
name: "Year",
value: carDetails["year"]),
CarItems(
name: "Mileage",
value: carDetails["mileage"]),
],
),
],
),
),
Positioned(
right: 30,
child: Image.asset("Images/rolls_royce.png"),
),
],
),
),
);
});
}
} else {
return const Text("No data");
}
}),
),
);
}
}
您的
builder
无法处理错误。前几行应该始终是这样的:
...
builder: (context, snapshot) {
if (snapshot.hasError) return Text("ERROR: ${snapshot.error}"); // 👈
if (snapshot.hasData) {
...