Getting the following error when trying to build my app after upgrading to 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
is just a json_serializable model.
Here's what PagingResponse
looks like:
@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);
Here's various versions:
[✓] 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
I'm omitting the rest of the doctor
output as this happens for both Android and iOS builds.
Looking around on the internet, I wasn't able to find anyone else with this issue who had a solution that applied. Here's some though:
I tried:
PagingResponse<Assignment>
and running a build - got the same error message with a different model class;flutter clean
~/.pub-cache
If anyone has as much as an idea on what this could be even related to, I would appreciate it, as currently I'm looking at code and making blind changes in hope I get a hit. Especially some hints on what this Dart stack is about would be appreciated, if some more knowledgeable folks stumble upon this question.
UPDATE: Ended up opening an issue for this and we are heading towards a resolution there: https://github.com/flutter/flutter/issues/64155
I have updated the flutter version to 1.20.2, and I have not encountered any problems, knowing that I use JsonSerializable
as well, try this:
Remove these files:
pubspec.lock
.packages
.flutter-plugins
.flutter-plugins-dependencies
then apply flutter pub get
command
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With