Flutter 如何在构造函数中存储多个数据

Flutter 如何在构造函数中存储多个数据,flutter,dart,Flutter,Dart,我正在自己写一个应用程序。此应用程序用于存储一个人在一天中工作的时间。我创建了一个方法,用于创建月份和该月份的天数。当我必须为用户选择的月份中的所有天存储(他/她开始工作的时间、某人当天结束工作的时间以及此人在工作中度过的总时间)时,我的问题就开始了。我正在使用Sembert在手机中存储数据,以避免使用外部数据库。我创建了一个包含所有必须使用的变量的类 这是数据库类: class DataBase { DatabaseFactory databaseFactory = database

我正在自己写一个应用程序。此应用程序用于存储一个人在一天中工作的时间。我创建了一个方法,用于创建月份和该月份的天数。当我必须为用户选择的月份中的所有天存储(他/她开始工作的时间、某人当天结束工作的时间以及此人在工作中度过的总时间)时,我的问题就开始了。我正在使用Sembert在手机中存储数据,以避免使用外部数据库。我创建了一个包含所有必须使用的变量的类

这是数据库类:

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'];
}
}