카테고리 없음
[flutter] insert list into sqflite database, list<> 타입 db에 저장하기
뚜개
2024. 11. 22. 11:58
나는 지금 대충 이런 형태의 클래스를 갖고 있다.
@freezed
class Temp with _$Temp {
@JsonSerializable(explicitToJson: true)
const factory Ddeugae({
required String id,
List<String>? imagePath,
}) = _Temp;
factory Temp.fromJson(Map<String, Object?> json) =>
_$TempFromJson(json);
}
class 내부에 List
db에는 TEXT INTEGER 등의 타입만 저장되기 때문에 저장하려면 알아서 전환해서 저장했어야했음
Map<String, dynamic> convertTemp(Temp t) {
var tojson = t.toJson();
tojson['imagePath'] = jsonEncode(t.imagePath);
return tojson;
}
Future<int> insert(Temp t) async {
final db = await database;
return await db.insert('t', convertTemp(t));
}
Future<List<Temp>> getTemps() async {
final db = await database;
final maps = await db.query('t');
return maps.map((map) {
var mutableMap = Map<String, dynamic>.from(map);
if (mutableMap['imagePath'] != null) {
mutableMap['imagePath'] = jsonDecode(mutableMap['imagePath'] as String);
}
var t = Temp.fromJson(mutableMap);
return t;
}).toList();
}
때문에 이런 방식으로 db에 넣는 걸로 수정했다.
잘 작동한다.