在 null safe Dart 中从 API 中获取数据时,字段应该保留为 null 还是初始化为默认值?
Should a field be left null or initialized to a default value when fetching data from an API in null safe Dart?
从 api 中检索某些内容时,是否应该为每个空字段设置一个值?或者我应该让它们保持为空并在显示它们时检查它们是否不为空?
例如:
factory Geo.fromJson(Map<String, dynamic> json) => Geo(
type: json["type"] == null ? 'Point' : json["type"],
coordinates: json["coordinates"] == null ? [] : List<double>.from(json["coordinates"].map((x) => double.tryParse(x))),
);
或
factory Geo.fromJson(Map<String, dynamic> json) => Geo(
type: json["type"] == null ? null : json["type"],
coordinates: json["coordinates"] == null ? null : List<double>.from(json["coordinates"].map((x) => double.tryParse(x))),
);
编辑 --> 或者我应该像这样用其他方式来做这件事吗?
factory Location.fromJson(Map<String, dynamic> json) {
return Location(
geo: json["geo"] = Geo.fromJson(json["geo"]),
city: json["city"] = json["city"],
country: json["country"] = json["country"],
area: json["area"] = json["area"],
);
}
Dart 中的空安全 不是 摆脱 null
的活动。 null
是有效信息。
举个最简单的例子:我老婆要吃披萨吗?似乎是一个简单的 true/false 问题。直到你认为“我还没有问过她”确实是一个同样有效的现实世界状态。
所以不,你不应该用其他东西替换你所有的 null
值。你会丢失信息。
再说一遍:null 安全并不意味着您摆脱了 null 值。这意味着您不再对空值 感到惊讶。
如果您的价值观可以合法地成为 null
,那就顺其自然吧。
您现在获得了改进的编译器支持,以确保您不会失误并错误地认为它们始终为非空值。那太棒了。开心就好。
从 api 中检索某些内容时,是否应该为每个空字段设置一个值?或者我应该让它们保持为空并在显示它们时检查它们是否不为空?
例如:
factory Geo.fromJson(Map<String, dynamic> json) => Geo(
type: json["type"] == null ? 'Point' : json["type"],
coordinates: json["coordinates"] == null ? [] : List<double>.from(json["coordinates"].map((x) => double.tryParse(x))),
);
或
factory Geo.fromJson(Map<String, dynamic> json) => Geo(
type: json["type"] == null ? null : json["type"],
coordinates: json["coordinates"] == null ? null : List<double>.from(json["coordinates"].map((x) => double.tryParse(x))),
);
编辑 --> 或者我应该像这样用其他方式来做这件事吗?
factory Location.fromJson(Map<String, dynamic> json) {
return Location(
geo: json["geo"] = Geo.fromJson(json["geo"]),
city: json["city"] = json["city"],
country: json["country"] = json["country"],
area: json["area"] = json["area"],
);
}
Dart 中的空安全 不是 摆脱 null
的活动。 null
是有效信息。
举个最简单的例子:我老婆要吃披萨吗?似乎是一个简单的 true/false 问题。直到你认为“我还没有问过她”确实是一个同样有效的现实世界状态。
所以不,你不应该用其他东西替换你所有的 null
值。你会丢失信息。
再说一遍:null 安全并不意味着您摆脱了 null 值。这意味着您不再对空值 感到惊讶。
如果您的价值观可以合法地成为 null
,那就顺其自然吧。
您现在获得了改进的编译器支持,以确保您不会失误并错误地认为它们始终为非空值。那太棒了。开心就好。