在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?

Posted

技术标签:

【中文标题】在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?【英文标题】:Using Dart in Flutter, how do I add to a list of maps that is inside of a list of maps? 【发布时间】:2021-11-13 08:05:59 【问题描述】:

我在使用 Dart/Flutter 组合时处于初​​级和中级之间。

我正在建立一个航海日志,我需要能够记录由可变数量的活动组成的职责。请参阅下面的代码。在此示例中,我有两个职责,每个职责包含 1 个活动。

    List<Map<String, dynamic>> duties = [
        
          'date': '12122021',
          'dutyStart': '00:00',
          'dutyFinish': '12:00',
          'skipper': 'Mark',
          'crew': 'My Crew',
          'assets': 'G1',
          'activity': [
            
              'activityType': 'Training',
              'trainingActivityDetail': 'Navigation',
              'wapolJobNumber': null,
              'rapNumber': null,
              'activityStart': '02:00',
              'activityFinish': '03:00',
              'startFuel': 100,
              'endFuel': 300,
              'fuelUsed': 200,
            
          ],
        ,
        
          'date': '01092021',
          'dutyStart': '18:00',
          'dutyFinish': '23:00',
          'skipper': 'Neil',
          'crew': 'My Crew',
          'assets': 'G2',
          'activity': [
            
              'activityType': 'WAMSAR',
              'trainingActivityDetail': null,
              'wapolJobNumber': '123',
              'rapNumber': '456',
              'activityStart': '19:00',
              'activityFinish': '20:00',
              'startFuel': 1000,
              'endFuel': 3000,
              'fuelUsed': 2000,
            
          ],
        
      ];

我已经研究出如何使用以下代码添加职责:

//add a duty
  duties.add(
    
      'date': '111111',
      'dutyStart': '11:11',
      'dutyFinish': '22:22',
      'skipper': 'Tom',
      'crew': 'My Crew',
      'assets': 'Ranger',
      'activity': [
        
          'activityType': 'WAMSAR',
          'trainingActivityDetail': null,
          'wapolJobNumber': '000',
          'rapNumber': '999',
          'activityStart': '19:00',
          'activityFinish': '20:00',
          'startFuel': 1000,
          'endFuel': 3000,
          'fuelUsed': 2000,
        
      ],
    ,
  );

但我不知道如何将活动添加到职责中。

例如,我如何将下面的活动添加到最后一个任务中,以便最后一个任务现在有 2 个活动而不是 1 个?:

        
          'activityType': 'XXX',
          'trainingActivityDetail': null,
          'wapolJobNumber': '000',
          'rapNumber': '999',
          'activityStart': '19:00',
          'activityFinish': '20:00',
          'startFuel': 1000,
          'endFuel': 3000,
          'fuelUsed': 2000,
        

现在我只是使用列表视图构建器中的数据,这些数据没有保存在任何地方。它将最终保存在 Firestore 云中。只是想知道如何在 Firestore 中保存活动?我很高兴在 Firestore 中保存了一项职责,但还没有进入列表中的保存列表。

抱歉,如果之前已涵盖此内容。我在发布之前确实检查过,但没有看到任何帮助。

【问题讨论】:

【参考方案1】:

你可以试试这个。这里我们在最后一个任务中插入activity元素如下:

  duties.last["activity"].add(
        
          'activityType': 'WAMSAR',
          'trainingActivityDetail': null,
          'wapolJobNumber': '000',
          'rapNumber': '999',
          'activityStart': '19:00',
          'activityFinish': '20:00',
          'startFuel': 1000,
          'endFuel': 3000,
          'fuelUsed': 200023,
        
     );
    
    print(duties);

输出

[date: 12122021, dutyStart: 00:00, dutyFinish: 12:00, skipper: Mark, crew: My Crew, assets: G1, activity: [activityType: Training, trainingActivityDetail: Navigation, wapolJobNumber: null, rapNumber: null, activityStart: 02:00, activityFinish: 03:00, startFuel: 100, endFuel: 300, fuelUsed: 200], date: 01092021, dutyStart: 18:00, dutyFinish: 23:00, skipper: Neil, crew: My Crew, assets: G2, activity: [activityType: WAMSAR, trainingActivityDetail: null, wapolJobNumber: 123, rapNumber: 456, activityStart: 19:00, activityFinish: 20:00, startFuel: 1000, endFuel: 3000, fuelUsed: 2000, activityType: WAMSAR, trainingActivityDetail: null, wapolJobNumber: 000, rapNumber: 999, activityStart: 19:00, activityFinish: 20:00, startFuel: 1000, endFuel: 3000, fuelUsed: 200023]]

【讨论】:

你可以使用 duty.last 而不是 duty[duties.length-1] @Andrija 很好的观察,欣赏。 是的,像这样的小东西会在应用程序中加起来...... @Andrija 如你所说更新了我的答案 @Jahidul 感谢兄弟这么简单的答案,它工作得很好,也感谢@Andrija .last ...从不知道你能做到这一点,这就是我从现在开始使用的!

以上是关于在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?的主要内容,如果未能解决你的问题,请参考以下文章

flutter - 如何在 dart/flutter 中收听流值

如何在视频/图像上添加图像或文本(水印) - Flutter/Dart

如何在 Dart/Flutter 中读取本地图像文件的字节数?

Flutter/Dart:get_cli 为页面添加更多视图

Flutter(Dart)如何在点击应用程序时将副本添加到剪贴板?

如何在 Flutter 中运行函数并获取值并将其添加到文本中