在我的应用程序中,我将数据导出到JSON。但是,当我尝试导入JSON文件时,它会抛出一个错误,如下所示:
E/flatter:[错误:flatter/shell/common/shell.cc(184)]省道错误:未处理的异常:NoSuchMethodError:对null调用了方法“[]”。接收方:null尝试调用:#0对象。noSuchMethod(dart:core/runtime/libobject_patch.dart:50:5)#1$RecipesModelFromJson(file:///home/stube/IdeaProjects/Flutter_Recipe/lib/JSON/recipes.g.dart:11:11)#2个新模式。fromJson(包:Time2Eat/JSON/recipes.dart:20:63)#3$RecipesModelFromJson(file:///home/stube/IdeaProjects/Flutter_Recipe/lib/JSON/recipes.g.dart:32:22)#4种新型配方。fromJson(包:Time2Eat/JSON/recipes.dart:20:63)#5 RecipebookState。创建RecipeJSON(包:Time2Eat/recipe/recipebook.dart:111:32)#6 RecipebookState。getPath(包:Time2Eat/recipe/recipebook.dart:123:9)#7 RecipebookState。建筑(包装:Time2Eat/recipe/recipebook.dart:185:19)#8动画儿童_表演(套装:颤振、速度、拨号、src、动画、儿童、飞镖:60:24)9_把手(包装:颤振/src/材料/墨水井。省道:507:14)#10#。建筑(包装:颤振/src/material/ink_well.省道:562:30)#11手势识别器。invokeCallback(包:flatter/src/signatures/recognizer.dart:102:24)#12 TapGestureCongnizer_检查(程序包:颤振/src/signatures/tap.dart:242:9)#13 TapGestureRecognizer。handlePrimaryPointer(软件包:flatter/src/signatures/tap.dart:175:7)#14 PrimaryPointer检测识别器。handleEvent(套装:颤振/src/手势/识别器。省道:315:9)#15点外部_调度(包:颤振/src/手势/指针路由器。dart:73:12)#16点路由器。路线(包:颤振/src/signatures/pointer_router.dart:101:11)#17_WidgetsFlutterBinding
recipes.g.dart,这是由json_serializable产生的:
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
RecipesModel _$RecipesModelFromJson(Map<String, dynamic> json) {
return RecipesModel(
json['name'] as String,
json['image'] as String,
json['description'] as String,
json['favorite'] as int,
json['timestamp'] as String,
json['preperation'] as String,
json['creation'] as String,
json['resting'] as String,
json['people'] as String,
json['backgroundColor'] as String,
(json['zutaten'] as List)
?.map((e) => e == null
? null
: ZutatenModel.fromJson(e as Map<String, dynamic>))
?.toList(),
(json['zubereitung'] as List)
?.map((e) => e == null
? null
: ZubereitungModel.fromJson(e as Map<String, dynamic>))
?.toList())
..recipeModel =
RecipesModel.fromJson(json['recipeModel'] as Map<String, dynamic>);
}
Map<String, dynamic> _$RecipesModelToJson(RecipesModel instance) =>
<String, dynamic>{
'name': instance.name,
'image': instance.image,
'description': instance.description,
'favorite': instance.favorite,
'timestamp': instance.timestamp,
'preperation': instance.preperation,
'creation': instance.creation,
'resting': instance.resting,
'people': instance.people,
'backgroundColor': instance.backgroundColor,
'zutaten': instance.zutaten,
'zubereitung': instance.zubereitung,
'recipeModel': instance.recipeModel
};
ZutatenModel _$ZutatenModelFromJson(Map<String, dynamic> json) {
return ZutatenModel(
json['zutat'] as String,
json['number'] as String,
json['measure'] as String
);
}
Map<String, dynamic> _$ZutatenModelToJson(ZutatenModel instance) =>
<String, dynamic>{
'zutat': instance.zutat,
'number': instance.number,
'measure': instance.measure
};
ZubereitungModel _$ZubereitungModelFromJson(Map<String, dynamic> json) {
return ZubereitungModel(json['number'] as String, json['steps'] as String);
}
Map<String, dynamic> _$ZubereitungModelToJson(ZubereitungModel instance) =>
<String, dynamic>{'number': instance.number, 'steps': instance.steps};
我在一个函数中调用RecipeModel.fromJson()方法,它应该能够将这些数据保存在数据库中。功能看起来像这样:
createJson() async{
FlutterDocumentPickerParams params = FlutterDocumentPickerParams(
allowedFileExtensions: ['json'],
invalidFileNameSymbols: ['/']
);
final path = await FlutterDocumentPicker.openDocument(params: params);
File file = new File(path);
createRecipeJson(file);
Map<String,dynamic> jSON = json.decode(path.readAsStringSync());
var model = RecipesModel.fromJson(jSON);
showBottomSnack("Name: ${model.name}", ToastGravity.BOTTOM);
}
我希望有人能帮我解决问题。那太棒了。
检查类成员中的@JsonSerializable(nullable: false)
(从ZutatenModel和RecipeModel开始)。
如果希望它们有时为null
,请不要在注释其模型类时标记null:false
。
如果是这种情况,请将其更改为@JsonSerializable(nullable:true)
。顺便说一句,默认设置为true。
当一些类属性被提供null
但是(nullable: false)
向JsonSerializer建议这些属性不会为空时,通常会发生此异常。
我有一个完整的工作颤振平台插件和一个演示颤振应用程序。Flatter应用程序正在通过各种渠道与本机代码愉快地交谈,并获得响应。现在我需要该应用程序在后台工作。按照各种指南,我发现我需要在我的插件上调用。但如果我这么做,应用程序就会崩溃: ***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“[MyPlugin setPluginRegistrantC
我正在从Flatter调用Firebase可调用函数,尽管我已经尝试了几乎所有的方法,但仍然无法处理可调用函数抛出的错误。 我的可调用函数如下所示: 然后,我在flatter中创建了一个Future来调用我的可调用函数: 最后,我用另一个错误处理程序从一个文本按钮调用我的未来: 当我调用我的函数并得到一个错误时,我的代码立即跳转到-并停止在-Flutter的(位于)。 它停在函数处的类,就在这里:
这是一个线程,用于处理服务器端的输入和输出: 如果我调用print方法,线程就会被阻塞。这意味着“之前”是打印出来的,但“之后”永远不会到达。printwriter的CheckError方法返回false! 它位于一个AbstractServer中,由两个不同的服务器使用。第一个以前就已经使用过了,而且一直都没有问题(现在仍然如此)。另一个是新的,导致了这个问题。对于每个初始化的连接(两个具有不同
所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?
问题内容: 我正在尝试模拟一个进行JNDI调用的私有方法。从单元测试中调用该方法时,它将引发异常^。我想模拟该方法用于测试目的。我使用了另一个问题answer中的示例代码,并且在测试通过时,似乎仍在调用底层方法。我在方法中插入,然后将其打印到控制台。 有趣的是,如果我将第一个注释掉,则测试通过。?:( 那么,我如何模拟出一个私有方法,使其不被调用? ^可以理解,由于我的工作空间不支持JNDI,因此
问题内容: 因此,我敢肯定那里有类似的东西,但是我一直在寻找一个小时,却没有找到我真正想要的东西。说我有一堂课,看起来像这样: 我该如何做这样的工作? 问题答案: 使用Mockito,您可以像这样 监视真实对象 : 有一些陷阱,因此也请查看相关文档。