Dart 定义正确的预变量以用于 for 语句

问题描述 投票:0回答:1

Dart 正确定义预变量以用于 for 语句

在 Dart 编程语言中,我之前写过这个循环:

for (final item in tempAddress) {
  addresses.add(AddressCollection()
    ..label = item.label
    ..lat = item.lat
    ..long = item.long
  );
}

现在,我无法定义

item.label
和其他人以从列表或地图中使用它们。例如我写了这样的代码:

final tempAddress = [
  {
    'label': 'new label'
  }
];

但它会抛出一个错误,指出

label
未定义为地图。然后我这样定义它:

final List<Map<String, dynamic>> tempAddress = [
  {
    'label': 'new label'
  }
];

但我仍然遇到同样的错误。

@collection
class AddressCollection {
  Id id = Isar.autoIncrement;

  @Backlink(to: 'locations')
  final profile = IsarLink<ProfileCollection>();

  @Backlink(to: 'orderLocation')
  final order = IsarLink<OrdersCollection>();

  late double lat;
  late double long;
  late String address;
  late String deliveryOption;
  String? businessName = '';
  String? streetAddress = '';
  late int postCode;
  late String city;
  int? unitNumber = 0;
  String? label = '';
  bool? isDefault = false;
}

定义这个变量的正确方法是什么?

flutter dart
1个回答
0
投票

我在 Flutter 和 Dart 方面没有那么进步,但只是学习者。

问题是循环中的 item 是一个 Map,因此您需要使用正确的键和类型转换来访问值。

例如:

for (final item in tempAddress) {
  addresses.add(AddressCollection()
    ..label = item['label'] as String
    ..lat = item['lat'] as double
    ..long = item['long'] as double
  );
}

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.