当前位置: 首页 > 知识库问答 >
问题:

列表”不是“Map类型的子类型

齐起运
2023-03-14

我从github获取了代码,但仍然不起作用

生成FutureBuilder时引发了以下类型错误(脏,状态:_FutureBuilderState#a936c):类型“List”不是类型“Map”的子类型

import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';

class Home extends StatefulWidget {
  Home({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  final dbRef = FirebaseDatabase.instance.reference().child("qs");

在此列出声明

List<Map<dynamic,dynamic>> lists = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('nothing'),
        ),
        body: FutureBuilder(
            future: dbRef.once(),
            builder: (context, AsyncSnapshot<DataSnapshot> snapshot) {
              if (snapshot.hasData) {
                lists.clear();

这是地图

Map<dynamic,dynamic> values = snapshot.data.value;
                values.forEach((key, values) {
                  lists.add(values);
                });
                return new ListView.builder(
                    shrinkWrap: true,
                    itemCount: lists.length,
                    itemBuilder: (BuildContext context[enter image description here][1], int index) {
                      return Card(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: <Widget>[
                            Text("Name: " + lists[index]["name"]),
                            Text("Age: " + lists[index]["age"]),
                            Text("Type: " + lists[index]["type"]),
                          ],
                        ),
                      );
                    });
              }
              return CircularProgressIndicator();
            }));
  }
}


共有1个答案

靳富
2023-03-14

看起来您正在分配List类型的值

您可以更改以下代码:

    Map<dynamic,dynamic> values = snapshot.data.value;
    values.forEach((key, values) {
      lists.add(values);
    });

对此:

    list = snapshot.data.value.map((value) =>  value as Map<dynamic, dynamic>).toList();

上面的代码映射了快照。数据将值转换为列表,每个列表项都转换为映射

 类似资料:
  • 我试图从API获取数据。我得到了错误类型列表不是地图的子类型。我是新来的,不明白我在哪里犯了错误。 这是我的回帖功能: 在我的主屏幕中,我使用了一个,如下所示: 如何解决此错误?提前谢谢。

  • 我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型

  • 我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 我是颤振初学者。我得到这样的JSON响应时出错。 我一直在论坛上寻找这个问题,我发现是这样的。 但我不懂如何编写函数。这是我的密码。 还有像这样的错误。 我很抱歉问了同样的问题,因为我不明白

  • 我有点被某些情况困住了。 1)