参数类型 'List<String>' 不能分配给 Dart 上的参数类型 'String'.dart(argument_type_not_assignable)

时间:2021-06-06 11:31:48

标签: flutter

'String?' 类型的值不能分配给“字符串”类型的变量。 尝试更改变量的类型,或将右侧类型转换为 'String'.dart(invalid_assignment)

  late String manufacturer;
  late double fuelCapacity;
  late double fuelRemaining;

  String showInfo() =>
      '$manufacturer: $fuelRemaining of $fuelCapacity (critical: $criticalFuelLevel)';

  double get criticalFuelLevel => fuelCapacity * 0.1;
  set newFuelRemaining(double val) => fuelRemaining = val;

  // default constructor
  Vehicle(
      {required this.manufacturer,
      required this.fuelCapacity,
      required this.fuelRemaining});

  // named constructor
  Vehicle.fromMap(Map<String,String> map) {
    this.manufacturer = map["manufacturer"];
    this.fuelCapacity = double.parse(["fuelCapacity"]);
    this.fuelRemaining = double.parse(['fuelRemaining']);
  }
}

void main() {
  var vehicle =
      Vehicle(manufacturer: 'BMW', fuelCapacity: 55, fuelRemaining: 20);

  vehicle.newFuelRemaining = 20;

  var vehicle2 = Vehicle.fromMap(
      {'manufacturer': 'KIA', 'fuelCapacity': '50', 'fuelRemaining': '20'});

  print(vehicle2.showInfo());
}```

1 个答案:

答案 0 :(得分:1)

这是因为 map["manufacturer"]; 无法确定制造商是否确定在地图内。如果确定在那里,您可以告诉 Dart 它不能像那样为空(最后一个 !):

 this.manufacturer = map["manufacturer"]!;

告诉我您是否需要其他任何东西或者问题不存在:)