【问题标题】:The method '[]' was called on null. Receiver: null Tried calling: []("subcategory")在 null 上调用了方法“[]”。接收方:null 尝试调用:[]("subcategory")
【发布时间】:2021-08-26 08:36:50
【问题描述】:

我正在尝试使用flutter和futurebuilder从firebase获取数据

这是代码

FutureBuilder<DocumentSnapshot>(
          future: _services.category.doc(_provider.selectedCategory).get(),
          builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot){
            if(snapshot.hasError){
              return Text('something went wrong...');
            }
            if(snapshot.connectionState == ConnectionState.waiting){
              return Center(child: CircularProgressIndicator(),);
            }
            Map<String, dynamic>data = snapshot.data.data();
            return Expanded(
              child: Column(
                children: [
                  Padding(
                    padding: const EdgeInsets.all(10),
                    child: Container(
                      child: Row(

                        children: [
                          Text('Main Category:   '),
                          FittedBox(
                              child: Text(_provider.selectedCategory,
                                style: TextStyle(fontWeight: FontWeight.bold),)),
                        ],
                      ),
                    ),
                  ),
                  Divider(thickness: 3,),
                  Container(
                    child: Expanded(
                      child: Padding(
                        padding: const EdgeInsets.all(10),
                        child: ListView.builder(
                          itemCount: data['subcategory'] == null ? 0: data['subcategory'].length,
                            itemBuilder: (BuildContext context, int index){
                              return ListTile(
                                contentPadding: EdgeInsets.zero,
                                leading: CircleAvatar(
                                  child: Text('${index + 1}'),
                                ),
                                title: Text(data['subcategory'][index]['name']),
                                onTap: (){
                                  _provider.selectSubCategory(data['subcategory'][index]['name']);
                                  Navigator.pop(context);
                                },

_provider.selectedCategory 来自另一个流构建器,用户根据同样来自 firebase 数据的选项选择类别

_services = CollectionReference category = FirebaseFirestore.instance.collection('categories');

但是文档快照好像是空的

谁能帮我解决这个问题? 谢谢

【问题讨论】:

    标签: flutter dart flutter-futurebuilder


    【解决方案1】:

    尝试添加if (snapshot.connectionState == ConnectionState.done&amp;&amp; snapshot.hasData &amp;&amp; snapshot.data != null){return your widget; }

    【讨论】:

    • 问题已解决。非常感谢您,先生,您能解释一下为什么我们需要设置 if 条件来完成这项工作吗?
    猜你喜欢
    • 2020-12-06
    • 2021-01-14
    • 2020-05-24
    • 2022-08-05
    • 2021-04-17
    • 2020-07-03
    • 2021-03-29
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多