Flutter 如何在构造函数中存储多个数据
我正在自己写一个应用程序。此应用程序用于存储一个人在一天中工作的时间。我创建了一个方法,用于创建月份和该月份的天数。当我必须为用户选择的月份中的所有天存储(他/她开始工作的时间、某人当天结束工作的时间以及此人在工作中度过的总时间)时,我的问题就开始了。我正在使用Sembert在手机中存储数据,以避免使用外部数据库。我创建了一个包含所有必须使用的变量的类 这是数据库类:Flutter 如何在构造函数中存储多个数据,flutter,dart,Flutter,Dart,我正在自己写一个应用程序。此应用程序用于存储一个人在一天中工作的时间。我创建了一个方法,用于创建月份和该月份的天数。当我必须为用户选择的月份中的所有天存储(他/她开始工作的时间、某人当天结束工作的时间以及此人在工作中度过的总时间)时,我的问题就开始了。我正在使用Sembert在手机中存储数据,以避免使用外部数据库。我创建了一个包含所有必须使用的变量的类 这是数据库类: class DataBase { DatabaseFactory databaseFactory = database
class DataBase {
DatabaseFactory databaseFactory = databaseFactoryIo;
Database _db;
final store = intMapStoreFactory.store('calendario');
static final DataBase _singleton = DataBase._internal();
DataBase._internal();
factory DataBase() {
return _singleton;
}
Future<Database> init() async {
if (_db == null) {
_openDB().then((db) {
_db = db;
});
}
return _db;
}
Future _openDB() async {
final documentPath = await getApplicationDocumentsDirectory();
final pathDB = join(documentPath.path, 'calendario.db');
final db = await databaseFactory.openDatabase(pathDB);
return db;
}
Future<List<Calendar>> readData() async {
if (_db == null) {
await init();
}
final finders = Finder(sortOrders: [
SortOrder('id'),
]);
final dataSnapshot = await store.find(_db, finder: finders);
return dataSnapshot.map((element) {
final finalData = Calendar.fromMap(element.value);
finalData.id = element.key;
return finalData;
}).toList();
}
Future insertData(Calendar calendarData) async {
int id = await store.add(_db, calendarData.transformInMap());
return id;
}
Future deleteData(Calendar calendarData) async {
final finder = Finder(filter: Filter.byKey(calendarData.id));
await store.delete(_db, finder: finder);
}
Future updateData(Calendar calendarData) async {
final finder = Finder(filter: Filter.byKey(calendarData.id));
await store.update(_db, calendarData.transformInMap(), finder: finder);
}
}
类数据库{
DatabaseFactory DatabaseFactory=databaseFactoryIo;
数据库(db),;
最终存储=intMapStoreFactory.store('calendario');
静态最终数据库_singleton=数据库。_internal();
数据库;
工厂数据库(){
返回单件;
}
Future init()异步{
如果(_db==null){
_openDB()。然后((db){
_db=db;
});
}
返回_db;
}
Future\u openDB()异步{
final documentPath=等待getApplicationDocumentsDirectory();
final-pathDB=join(documentPath.path,'calendario.db');
final db=await databaseFactory.openDatabase(pathDB);
返回分贝;
}
Future readData()异步{
如果(_db==null){
等待初始化();
}
最终查找者=查找者(排序者:[
排序器('id'),
]);
final dataSnapshot=wait store.find(_db,finder:finders);
返回dataSnapshot.map((元素){
最终最终数据=Calendar.fromMap(element.value);
finalData.id=element.key;
返回最终数据;
}).toList();
}
Future insertData(日历数据)异步{
int id=wait store.add(_db,calendarData.transformInMap());
返回id;
}
未来删除数据(日历数据)异步{
final finder=finder(过滤器:filter.byKey(calendarData.id));
等待存储。删除(_db,finder:finder);
}
未来更新数据(日历数据)异步{
final finder=finder(过滤器:filter.byKey(calendarData.id));
wait store.update(_db,calendarData.transformInMap(),finder:finder);
}
}
这是日历类:
class Calendar {
int id;
String nameOfMonth;
int numberOfDays;
Calendar({this.nameOfMonth});
Map<String, dynamic> transformInMap() {
return {
'id': id ?? null,
'name': nameOfMonth ?? null,
'numDays': numberOfDays ?? null,
};
}
Calendar.fromMap(Map<String, dynamic> map) {
id = map['id'];
nameOfMonth = map['name'];
numberOfDays = map['numDays'];
}
}
课程日历{
int-id;
每月的字符串名称;
整数天;
日历({this.nameOfMonth});
映射映射{
返回{
“id”:id??空,
“名称”:nameOfMonth??空,
“numDays”:numberOfDays??空,
};
}
Calendar.fromMap(地图地图){
id=map['id'];
nameOfMonth=map['name'];
numberOfDays=map['numDays'];
}
}