'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());
}```
答案 0 :(得分:1)
这是因为 map["manufacturer"];
无法确定制造商是否确定在地图内。如果确定在那里,您可以告诉 Dart 它不能像那样为空(最后一个 !):
this.manufacturer = map["manufacturer"]!;
告诉我您是否需要其他任何东西或者问题不存在:)