import 'dart:async'; import 'package:flutter/widgets.dart'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; import 'package:fooder/storage/product.dart'; import 'package:fooder/storage/diary.dart'; class Storage { Database db; ProductStorage product; DiaryStorage diary; static const String path = "storage.db"; Storage({required this.db, required this.product, required this.diary}); static Future create() async { WidgetsFlutterBinding.ensureInitialized(); var db = await openDatabase( join(await getDatabasesPath(), path), onCreate: createTables, version: 1, ); return Storage( db: db, product: ProductStorage(db: db), diary: DiaryStorage(db: db)); } Future reset() async { await db.close(); await deleteDatabase(join(await getDatabasesPath(), path)); db = await openDatabase( join(await getDatabasesPath(), path), onCreate: createTables, version: 1, ); product = ProductStorage(db: db); diary = DiaryStorage(db: db); } static Future createTables(Database db, int version) async { var batch = db.batch(); await ProductStorage.createTable(batch); await DiaryStorage.createTable(batch); await batch.commit(noResult: true); } }