我尝试在单击复选框时将其从false更改为true,但它返回null不是bool类型子类型。
下面是我的代码:
// my function for checkbox
void checkBoxChanged(bool? value, int index) {
setState(() {
db.folderTask[index].isChecked = !db.folderTask[index].isChecked;
});
db.updateDatabase();
}
错误在这里:
class FolderTask {
String? name;
bool isChecked = false;
FolderTask({required this.name, required this.isChecked});
factory FolderTask.fromJson(json) {
return FolderTask(name: json['name'], isChecked: json['isChecked']);
}
Map<String, dynamic> toJson() => {
"name": name,
"task": [isChecked]
};
}
2条答案
按热度按时间l7wslrjt1#
您可以在空情况下提供默认值,例如:
3ks5zfa02#
问题似乎出在FolderTask类的isChecked属性上。在FolderTask类的构造函数中,您已按要求声明了isChecked参数,但在fromJson工厂方法中,当从JSON对象创建新的FolderTask示例时,您没有为isChecked属性提供值。
若要修正此问题,您可以从建构函式的isChecked参数中移除必要的保留字,或在fromJson方法中提供isChecked属性的预设值。
以下示例说明如何更新FolderTask类以解决此问题:
或者,您可以在建构函式中提供isChecked属性的预设值,如下所示:
这两种方法都可以解决此问题,并允许您切换FolderTask类的isChecked属性,而不会遇到“null不是bool类型的子类型”错误。
我希望这对你有帮助!