我按照楼层文档一步步进行。 实体、Dao、转换器和数据库已创建。 Build_generator 生成 model.g.dart 文件类型,但不生成 database.g.dart 文件。
我遇到两个错误:
Could not generate `fromJson` code for `changeListener`.
To support the type `StreamController` you can:
* Use `JsonConverter`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonConverter-class.html
* Use `JsonKey` fields `fromJson` and `toJson`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/fromJson.html
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/toJson.html
package:floor/src/database.dart:11:39
╷
11 │ late final StreamController<String> changeListener;
我觉得很奇怪的错误,因为它要求我为 FloorDatabase 类的侦听器创建一个转换器...
还有:
没有实体添加到数据库注释中。 包:sirusmobile/database/database.dart:93:16 ╷ 93 │ 抽象类 AppDatabase 扩展 FloorDatabase {
但是,各实体消息灵通。
part 'database.g.dart';
@JsonSerializable()
@Database(version: 2, entities: [
AccesToken,
Account,
Chauffeur,
Coordonnees,
FilsDiscussion,
LieuIntervention,
Mission,
Permanence,
PositionGps,
Secteur,
Societe,
Transmission,
Vehicule,
Delai,
Destination,
Motifs,
Raison,
Synchro
])
@TypeConverters([
StringListConverter,
ChauffeurConverter,
DegresUrgenceConverter,
DelaiConverter,
DestinationConverter,
EquipementConverter,
FilsDiscussionConverter,
MotifsAnnulationConverter,
MotifsRefusConverter,
MotifsSortieBlancheConverter,
RaisonConverter,
SocieteConverter,
VehiculeConverter
])
abstract class AppDatabase extends FloorDatabase {
AccesTokenDao get accesTokenDao;
AccountDao get accountTokenDao;
ChauffeurDao get chauffeurDao;
CoordonneesDao get coordoneesDao;
FilsDiscussionDao get filsDiscussionDao;
LieuInterventionDao get lieuInterventionDao;
MissionDao get missionDao;
PermanenceDao get permanenceDao;
PositionGpsDao get positionGps;
SecteurDao get secteurDao;
SocieteDao get societeDao;
TransmissionDao get transmissionDao;
VehiculeDao get vehiculeDao;
DelaiDao get delaiDao;
DestinationDao get destinationDao;
MotifsDao get motifsDao;
RaisonDao get raisonDao;
SynchroDao get synchroDao;
}
我已经尝试解决这个问题太久了。 有人可以帮我吗? 预先感谢。
我尝试注释掉 ApDatabase 类中的 @JsonSerialized() 注释,并且有关 changeListener 的错误消失了。
还有第二个: “没有实体添加到数据库注释中。”
不过模型看起来还不错。
例如:
part 'Transmission.g.dart';
@JsonSerializable(includeIfNull: false)
@entity
class Transmission {
@primaryKey
int? idPrim;
int? id;
String? codeSociete;
String? codeVehicule;
int? delaiCalcule;
bool? negocie;
int? delaiNegocie;
int? delaiMax;
String? etat;
Transmission(
{this.id,
this.codeSociete,
this.codeVehicule,
this.delaiCalcule,
this.negocie,
this.delaiNegocie,
this.delaiMax,
this.etat});
Transmission.fromJson(Map<String, dynamic> json) {
id = json['id'];
codeSociete = json['codeSociete'];
codeVehicule = json['codeVehicule'];
delaiCalcule = json['delaiCalcule'];
negocie = json['negocie'];
delaiNegocie = json['delaiNegocie'];
delaiMax = json['delaiMax'];
etat = json['etat'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['codeSociete'] = this.codeSociete;
data['codeVehicule'] = this.codeVehicule;
data['delaiCalcule'] = this.delaiCalcule;
data['negocie'] = this.negocie;
data['delaiNegocie'] = this.delaiNegocie;
data['delaiMax'] = this.delaiMax;
data['etat'] = this.etat;
return data;
}
}
将实体导入 AppDatabase 类似乎也可以。
import 'package:sirusmobile/models/transmission.dart';
我回答我的问题是因为我解决了问题。 为此我做了两件事。
在 DAO 中,查询中的类名称不正确。
在实体中我没有 fromMap 和 toMap 方法,只有 json 方法 fromJson 和 toJson。
希望这可以帮助一些人。
美好的一天!