import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart' as Sqlite; import 'package:sqflite/sqflite.dart'; import 'package:taskservice/Model/JXMemberModel.dart'; import 'package:taskservice/Model/JXServiceModel.dart'; class MyDataBase { static MyDataBase _instance; Database _database; String tableMembers = 'members'; String tableServices = 'services'; static Future get database async { if(_instance == null){ _instance = MyDataBase(); String path = join((await Sqlite.getDatabasesPath()), 'data.db'); print('dbPath:${path}'); await _instance.init(); } return _instance; } Future init() async { _database = await Sqlite.openDatabase(join((await Sqlite.getDatabasesPath()), 'data.db')); List> result = await _database.rawQuery("CREATE TABLE IF NOT EXISTS $tableMembers(id INTEGER PRIMARY KEY," "name TEXT, tel TEXT, birth TEXT, prov TEXT, city TEXT, area TEXT, addr TEXT, remark TEXT, services TEXT," "createtime DATETIME DEFAULT CURRENT_TIMESTAMP," "updatetime DATETIME DEFAULT CURRENT_TIMESTAMP);" "CREATE TRIGGER [updatetime]" "AFTER UPDATE" "ON members" "FOR EACH ROW" "BEGIN" "UPDATE members SET updatetime = CURRENT_TIMESTAMP WHERE id = old.id;" "END;"); List> services = await _database.rawQuery("CREATE TABLE IF NOT EXISTS $tableServices(id INTEGER PRIMARY KEY, " "kind TEXT, cycle INTEGER, cycleUnit TEXT, remindDay INTEGER, remark TEXT, " "createtime DATETIME DEFAULT CURRENT_TIMESTAMP, " "updatetime DATETIME DEFAULT CURRENT_TIMESTAMP);" "CREATE TRIGGER [updatetime]" "AFTER UPDATE" "ON members" "FOR EACH ROW" "BEGIN" "UPDATE members SET updatetime = CURRENT_TIMESTAMP WHERE id = old.id;" "END;"); } Future> queryAllMembers() async { List> data = await _database.query("$tableMembers"); return data.map((e) => JXMemberModel() ..id = e['id'] ..name = e['name'] ..tel = e['tel']) .toList(); } Future saveMember(JXMemberModel jxMemberModel) async { await _database.insert( tableMembers, jxMemberModel.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, ); } /*服务*/ Future> queryAllServices() async { List> data = await _database.query("$tableServices"); return data.map((e) => JXServiceModel() ..id = e['id'] ..kind = e['kind'] ..cycle = e['cycle'] ..cycleUnit = e['cycleUnit'] ..remindDay = e['remindDay'] ..remark = e['remark']) .toList(); } /*添加新服务*/ Future saveService(JXServiceModel jxServiceModel) async { await _database.insert( tableServices, jxServiceModel.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, ); return null; } }