如何从 Firebase Firestore 读取数据

问题描述 投票:0回答:1

我当前尝试从 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");
                  }
                }),
          ),
        );
      }
    }

Firebase 系列图片

flutter firebase google-cloud-firestore
1个回答
0
投票

您的

builder
无法处理错误。前几行应该始终是这样的:

...
builder: (context, snapshot) {
  if (snapshot.hasError) return Text("ERROR: ${snapshot.error}"); // 👈
  if (snapshot.hasData) {
    ...
© www.soinside.com 2019 - 2024. All rights reserved.