无法在容器 Flutter Firebase 中获取 List<Text> 的值

Posted

技术标签:

【中文标题】无法在容器 Flutter Firebase 中获取 List<Text> 的值【英文标题】:Can't get value of a List<Text> in container Flutter Firebase 【发布时间】:2021-01-20 07:10:21 【问题描述】:

我正在尝试打印我的“菜单”集合中存在的文档的文档 ID。但似乎小部件没有获得 documentIDs List&lt;Text&gt; 列表的值。当我在 addDocId 函数中打印列表时,它会打印 documentID 的内容,但如果我打印列表,它只会在构建小部件中输出 - ('[]')。我不知道为什么 docIds 是空的。请帮帮我。


    import 'package:flutter/material.dart';
    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    class Category extends StatefulWidget 
      @override
      _CategoryState createState() => _CategoryState();
    
    
    class _CategoryState extends State<Category> 
      bool _initialized = false;
      bool _error = false;
    
      initializeFlutterFire() async 
        try 
          await Firebase.initializeApp();
          setState(() 
            _initialized = true;
          );
         catch (e) 
          setState(() 
            _error = true;
          );
        
      
    
      @override
      void initState() 
        initializeFlutterFire();
    
        super.initState();
      
    
      Widget somethingWentWrong() 
        return AlertDialog(
          title: Text('Something Went Wrong'),
          content: Icon(
            Icons.error,
            color: Colors.red,
            size: 40.0,
          ),
        );
      
    
      Widget loading() 
        return Center(
          child: CircularProgressIndicator(
            backgroundColor: Colors.black,
            valueColor: new AlwaysStoppedAnimation<Color>(Colors.black),
          ),
        );
      
    
      List<Text> docIds = [];
    
      void addDocId(String s) 
        docIds.add(Text(s));
        print(docIds);
      
    
      @override
      Widget build(BuildContext context) 
        if (_error) 
          return somethingWentWrong();
        
        if (!_initialized) 
          return loading();
        
    
        FirebaseFirestore.instance
            .collection('Menu')
            .get()
            .then((QuerySnapshot querySnapshot) => 
                  querySnapshot.docs.forEach((doc) 
                    addDocId(doc.id);
                  )
                );
        print(docIds);
    
        return Container(
            margin: EdgeInsets.fromLTRB(
              50.0,
              100.0,
              50.0,
              100.0,
            ),
            // color: Colors.blueAccent,
            child: Center(
              child: ListView(
                children: docIds,
              ),
            ));
      
    

【问题讨论】:

【参考方案1】:

由于 Text 仅在 Flutter 中被识别,因此它不适用于 Firebase。尝试使用带有文本值的字符串,或者使用文本中的每个独立变量(例如字体大小)创建一个映射。

【讨论】:

以上是关于无法在容器 Flutter Firebase 中获取 List<Text> 的值的主要内容,如果未能解决你的问题,请参考以下文章

Firebase/Flutter - 无法将数据写入数据库

无法在 Flutter 中使用 Firebase Auth 进行注册

Flutter:无法从 firebase 读取数据。方法 '[]' 在 null 错误上被调用

Flutter - 无法构建插件 firebase_core

无法使用 Flutter Mobile 上传到 Firebase 存储

安装 Firebase 后 Flutter 无法在 Android 上运行