首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型'List<Map<String,dynamic>>‘不是'Map<dynamic,dynamic>’的子类型

类型'List<Map<String,dynamic>>‘不是'Map<dynamic,dynamic>’的子类型
EN

Stack Overflow用户
提问于 2022-08-28 17:49:10
回答 1查看 38关注 0票数 0

我试图将“从列表”设置为“映射”,我得到了这个错误。

我从Firestore获取数据,下面您可以看到查询和输出。

代码语言:javascript
复制
  List<Map<String, dynamic>> transactionData = [];
  List accountList = [];
  List availableAccount = [];

getData() async{
    final dataDB = await FirebaseFirestore.instance.collection('TransactionData').doc(getUid()).get();
    snapshot = dataDB;
    final Map<String, dynamic> documentData = snapshot.data() as Map<String, dynamic>;

    documentData.forEach((key, value) {
      availableAccount.add(key);
    });

    for(int j=0;j<availableAccount.length;j++){
      transactionData = (documentData[availableAccount[j]] as List).map((accountList) => accountList as Map<String, dynamic>).toList();
      accountList.add(transactionData);
    }
    _cards = accountList;
    print('Cards: $_cards');
    setState(() {
      _data = _cards![0];
    });
  }
代码语言:javascript
复制
Cards: [[{categoryName: Education, uid: LNM6JQuoKCPIANTyQHMKWLIzl5m1, amount: 3,000.00, lastUpdatedDate: 25-08-2022, createdDate: 25-08-2022, toAccountId: , type: Credit, transfer: N, accountId: 21Aug5298Sav, auto: Y, accountName: null, transactionId: deb1621, categoryLogo: assets/images/Education.png, untagged: N, categoryBackgroundColor: 0xffFFA2C0, currency: INR, transactionDate: 25-08-2022}, {categoryName: Education, uid: LNM6JQuoKCPIANTyQHMKWLIzl5m1, amount: 300.00, lastUpdatedDate: 25-08-2022, createdDate: 25-08-2022, toAccountId: , type: Debit, transfer: N, accountId: 21Aug5298Sav, auto: Y, accountName: null, transactionId: deb5366, categoryLogo: assets/images/Education.png, untagged: N, categoryBackgroundColor: 0xffFFA2C0, currency: INR, transactionDate: 25-08-2022}, {categoryName: Travelling, uid: LNM6JQuoKCPIANTyQHMKWLIzl5m1, amount: 100.00, lastUpdatedDate: 24-08-2022, createdDate: 24-08-2022, toAccountId: , type: , transfer: N, accountId: 21Aug5298Sav, auto: Y, accountName:<…>

有人能帮我解决这个问题吗?当我把'_cards‘设置为'_data’时会出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-28 18:31:41

您希望_cards是一个List<Map<String, dynamic>>,但它不是。这是一个List<List<Map<String, dynamic>>>,尝试将它的第一项List<Map<String, dynamic>>传递给_data,后者是Map<String, dynamic>,这是一个问题。如果您想将任何值从_cards传递给_data,应该如下所示:

代码语言:javascript
复制
_data = _cards![0][0];

如果要将List<List<Map<String, dynamic>>>转换为List<Map<String, dynamic>>,请执行以下操作:

代码语言:javascript
复制
List<String> newCards = [];
          
for (var item in _cards) {
  newCards = [...newCards, ...item];
}

然后:

代码语言:javascript
复制
_data = newCards[0]; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73520923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档