【问题标题】:I cannot get the data from the firestore into my application我无法将数据从 Firestore 获取到我的应用程序中
【发布时间】:2021-12-09 02:30:21
【问题描述】:

我是编程新手,在尝试创建小型 TODO 应用程序时,我能够将数据保存到 Cloud Firestore,但是当我尝试使用 Streambuilder 检索数据时出现问题。在 null 安全性之前,我一直在关注旧教程,所以我怀疑问题与 null 安全性有关。 该代码在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),
               );
               }
             }
             ),
            ],
          ),
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter dart google-cloud-firestore stream-builder


    【解决方案1】:

    您的收藏名称拼写错误。请记住,Firestore 区分大小写

    Todostodos

    FirebaseFirestore.instance.collection("Todos").add({"title" : _controller.text});
    

    这里:

    stream: FirebaseFirestore.instance.collection('todos').snapshots(),
    

    如果这没有帮助,请告诉我

    【讨论】:

    • 您好,非常感谢您的建议。我太笨了,连最简单的错误都没有检查。
    猜你喜欢
    • 2021-08-17
    • 2019-11-08
    • 2021-02-27
    • 2021-09-23
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多