升级到 Flutter 1.20.1 后尝试构建我的应用程序时出现以下错误。
Unhandled exception:
Crash when compiling null,
at character offset null:
InterfaceType(PagingResponse<Assignment*>*) is not a subtype of Class(Response) in VariableGet(response{PagingResponse<Assignment*>*})
#0 TypeEnvironment.typeError (package:kernel/type_environment.dart:164:7)
#1 Expression.getStaticTypeAsInstanceOf (package:kernel/ast.dart:3037:10)
#2 PropertyGet.getStaticType (package:kernel/ast.dart:3200:20)
#3 transformAsExpression (package:kernel/transformations/type_casts_optimizer.dart:22:45)
#4 _Lowering.visitAsExpression (package:vm/transformations/lowering.dart:65:12)
#5 AsExpression.accept (package:kernel/ast.dart:4913:44)
#6 VariableSet.transformChildren (package:kernel/ast.dart:3154:21)
#7 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#8 TreeVisitor.defaultExpression (package:kernel/visitor.dart:144:43)
#9 TreeVisitor.visitVariableSet (package:kernel/visitor.dart:148:43)
#10 VariableSet.accept (package:kernel/ast.dart:3144:44)
#11 ExpressionStatement.transformChildren (package:kernel/ast.dart:5794:31)
// bunch of stack that doesn't look important
#133 KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:355:12)
#134 IncrementalCompiler.computeDelta.<anonymous closure> (package:front_end/src/fasta/incremental_compiler.dart:274:28)
<asynchronous suspension>
#135 IncrementalCompiler.computeDelta.<anonymous closure> (package:front_end/src/fasta/incremental_compiler.dart)
#136 CompilerContext.runInContext.<anonymous closure>.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:123:46)
#137 new Future.sync (dart:async/future.dart:223:31)
#138 CompilerContext.runInContext.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:123:19)
#139 _rootRun (dart:async/zone.dart:1190:13)
#140 _CustomZone.run (dart:async/zone.dart:1093:19)
#141 _runZoned (dart:async/zone.dart:1630:10)
#142 runZoned (dart:async/zone.dart:1550:10)
Assignment
只是一个 json_serializable 模型。这是什么
PagingResponse
好像:@JsonSerializable()
class PagingResponse<T> {
PagingResponse(
this.status,
this.message,
this.code,
this.dataJson,
);
String status;
String message;
String code;
@JsonKey(ignore: true)
PagingResponseData<T> data;
@JsonKey(name: 'data')
Map<String, dynamic> dataJson;
factory PagingResponse.fromJson(
Map<String, dynamic> json,
PagingResponseDataDataGeneratorFunction<T> rowsFromJson,
) {
PagingResponse<T> response = _$PagingResponseFromJson<T>(json);
// Our API sometimes returns data directly and at other times nested under
// another object. Check if data directly has a rows field. If not, this
// probably means that data is nested inside an object.
if (response.dataJson?.containsKey('rows') ?? false) {
response.data = new PagingResponseData<T>.fromJson(response.dataJson);
response.data.rows = rowsFromJson(response.data.rowsJson);
} else if (response.dataJson?.isNotEmpty ?? false) {
response.data =
new PagingResponseData<T>.fromJson(response.dataJson.values.first);
response.data.rows = rowsFromJson(response.data.rowsJson);
}
return response;
}
Map<String, dynamic> toJson() => _$PagingResponseToJson(this);
}
typedef List<T> PagingResponseDataDataGeneratorFunction<T>(List<dynamic> json);
这里有各种版本:[✓] Flutter (Channel stable, 1.20.1, on Mac OS X 10.15.4 19E287, locale en-US)
• Flutter version 1.20.1 at /Users/------/dev/tools/flutter
• Framework revision 2ae34518b8 (9 days ago), 2020-08-05 19:53:19 -0700
• Engine revision c8e3b94853
• Dart version 2.9.0
我省略了 doctor
的其余部分输出,因为 Android 和 iOS 版本都会发生这种情况。在互联网上环顾四周,我找不到任何其他有此问题的解决方案的人。这里有一些:
我试过:
PagingResponse<Assignment>
并运行构建 - 使用不同的模型类得到相同的错误消息; flutter clean
~/.pub-cache
如果有人对这可能与之相关的事情有任何想法,我将不胜感激,因为目前我正在查看代码并进行盲目更改,希望能得到成功。如果一些知识渊博的人偶然发现这个问题,特别是关于这个 Dart 堆栈是什么的一些提示将不胜感激。
更新:
最终为此打开了一个问题,我们正朝着那里的解决方案迈进:https://github.com/flutter/flutter/issues/64155
最佳答案
我已经更新了 flutter 版至 1.20.2 ,而且我也没有遇到任何问题,知道我用的是JsonSerializable
同样,试试这个:
删除这些文件:
pubspec.lock
.packages
.flutter-plugins
.flutter-plugins-dependencies
然后申请
flutter pub get
命令
关于flutter - InterfaceType 不是 VariableGet 中 Class 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63417596/