Dart 空安全:操作数不能为空,因此条件始终为真
Dart null safety: the operand cannot be null, so the condition is always true
我正在尝试仔细检查用户对象是否已成功创建,但是 Null saftey 说
the operand cannot be null, so the condition is always true
如果在 json 数据包含无效类型的情况下,在这种情况下创建用户对象时可能会出现一些错误
class User {
String? name;
String? age;
User({name, age}) {
this.name = name;
this.age = age;
}
factory User.fromJson(dynamic json) {
return User(name: json['name'], age: json['age']);
}
}
void main() {
String data = '{name: "mike",age: "2"}';
User user = User.fromJson(data);
if (user != null) { // Warning: "The operand can't be null, so the condition is always true. Remove the condition."
}
}
请指教,谢谢! :)
如果从 JSON 输入创建 User
对象时出现错误,在您的情况下,它会抛出一个 Exception
如果没有捕获,程序将崩溃.
所以在你的情况下变量 user
不能是 null
,这就是警告告诉你的。
如果你想要某种User.tryFromJson
,其中returns null
以防出现任何问题,你可以添加这样的东西给你User
class:
static User? tryFromJson(dynamic json) {
try {
return User.fromJson(json);
} catch (_) {
return null;
}
}
还有一些小意见。您的 User
构造函数没有多大意义,因为您可以改为编写以下内容:
User({this.name, this.age});
此外,我会提出两个参数 required
并阻止可为空的类型。所以像这样(也将 age
更改为 int
):
class User {
String name;
int age;
User({
required this.name,
required this.age,
});
factory User.fromJson(dynamic json) => User(
name: json['name'] as String,
age: json['age'] as int,
);
static User? tryFromJson(dynamic json) {
try {
return User.fromJson(json);
} catch (_) {
return null;
}
}
}
void main() {
final data = '{name: "mike",age: 2}';
final user = User.fromJson(data);
}
我正在尝试仔细检查用户对象是否已成功创建,但是 Null saftey 说
the operand cannot be null, so the condition is always true
如果在 json 数据包含无效类型的情况下,在这种情况下创建用户对象时可能会出现一些错误
class User {
String? name;
String? age;
User({name, age}) {
this.name = name;
this.age = age;
}
factory User.fromJson(dynamic json) {
return User(name: json['name'], age: json['age']);
}
}
void main() {
String data = '{name: "mike",age: "2"}';
User user = User.fromJson(data);
if (user != null) { // Warning: "The operand can't be null, so the condition is always true. Remove the condition."
}
}
请指教,谢谢! :)
如果从 JSON 输入创建 User
对象时出现错误,在您的情况下,它会抛出一个 Exception
如果没有捕获,程序将崩溃.
所以在你的情况下变量 user
不能是 null
,这就是警告告诉你的。
如果你想要某种User.tryFromJson
,其中returns null
以防出现任何问题,你可以添加这样的东西给你User
class:
static User? tryFromJson(dynamic json) {
try {
return User.fromJson(json);
} catch (_) {
return null;
}
}
还有一些小意见。您的 User
构造函数没有多大意义,因为您可以改为编写以下内容:
User({this.name, this.age});
此外,我会提出两个参数 required
并阻止可为空的类型。所以像这样(也将 age
更改为 int
):
class User {
String name;
int age;
User({
required this.name,
required this.age,
});
factory User.fromJson(dynamic json) => User(
name: json['name'] as String,
age: json['age'] as int,
);
static User? tryFromJson(dynamic json) {
try {
return User.fromJson(json);
} catch (_) {
return null;
}
}
}
void main() {
final data = '{name: "mike",age: 2}';
final user = User.fromJson(data);
}