I am using Drift (Moor) v2.0.2+1 library for my local database and json_serializable v6.3.1 library to serialize my data models. Then I use build_runner v2.2.0 library to generate boilerplate code for both.
I have a database table called Passenger Table. When running build_runner, it generates DataClass for the table, like so:
class PassengerTableData extends DataClass implements Insertable<PassengerTableData> {
final int? id;
final String? firstName;
final String? lastName;
.......
}
I want to use this DataClass class as a response object from my API calls. So, I added a data model like so:
@JsonSerializable(explicitToJson: true)
class CreatePassengerRequest {
List<PassengerTableData?>? passengers;
CreatePassengerRequest(this.passengers);
factory CreatePassengerRequest.fromJson(Map<String, dynamic> json) => _$CreatePassengerRequestFromJson(json);
Map<String, dynamic> toJson() => _$CreatePassengerRequestToJson(this);
}
When running build_runner, it also generates serializing code for this model but it is not able to generate proper code for the DataClass and only puts dynamic in its place. The result is as follows:
CreatePassengerRequest _$CreatePassengerRequestFromJson(Map<String, dynamic> json)
=>CreatePassengerRequest(json['passengers'] as List<dynamic>?); // <--- here
Since build_runner is generating code for both the libraries, could it be that when serializing code is generated for the model, the DataClass is not generated yet? Is it possible to "freeze" some files from being rebuilt when running build_runner or to change the order of files being processed by build_runner?
I tried using the build_config library but I could not make it work.