提问人:Gaël CHEYROUSE 提问时间:9/25/2023 最后编辑:Gaël CHEYROUSE 更新时间:9/30/2023 访问量:98
Flutter Floor 数据库。无法生成楼层数据库
Flutter Floor Database. Failed to generate the floor database
问:
我一步一步地遵循地板文档。 实体、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;
}
我试图解决这个问题已经太久了。 有人可以帮我吗? 提前致谢。
答:
0赞
Gaël CHEYROUSE
9/25/2023
#1
我试图注释掉类中的注释,但有关changeListener的错误消失了。@JsonSerializable()
AppDatabase
还有第二个:
没有向数据库注释添加任何实体。
但是,模型似乎还可以。
例如:
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';
0赞
Gaël CHEYROUSE
9/29/2023
#2
我正在回答我的问题,因为我解决了问题。 我为此做了两件事。
在 DAO 中,查询中的类名称不正确。
在实体中,我没有 fromMap 和 toMap 方法,而只有 json 方法 fromJson 和 toJson。
希望这可以帮助一些人。
日安!
评论