flutter sqflite clears table after hot restart

Viewed 30

On creating my sqflite database,i create my table activity_table using the 'onCreate' parameter. it starts with 0 records. i can insert ,edit and delete records in it. i can query and check the count of records. everything is working fine.

problem: But after hot restart,the table is getting empty.

class ActivityDB  {
  static final ActivityDB instance = ActivityDB._internal();
  ActivityDB._internal();
  static Database? _database;

  Future<Database> get database async {
    if (_database != null) {
      return _database!;
    }
    _database = await _init();
    return _database!;
  }

  Future<Database> _init() async {
    Database db = await openDatabase(
      join(await getDatabasesPath(), 'activity.db'), //path
      onCreate: (db, version) async {
        await db.execute('''CREATE TABLE activity_table
          (
          id TEXT PRIMARY KEY,
          title TEXT NOT NULL,
          )''');
      },
      version: 1,
    );
  }
  editActivity({required Activity activity,}) async {
    Database db = await database;
    await db.update(
      'activity_table',
      activity.toMap(),
      where: 'id = ?',
      whereArgs: [
        activity.id,
      ],
    );
  }

  addActivity(Activity activity) async {
    Database db = await database;
    await db
        .insert(
      'activity_table',
      activity.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

  removeActivity(String id) async {
    Database db = await database;
    await db.delete(
      'activity_table',
      where: 'id = ?',
      whereArgs: [id],
    );
  }

On every hot restart allActivity() is empty

  allActivity() async {
     Database db = await database;
     List<Map<String, dynamic>> activitiesMapFromDB = await db.query('activity_table');
     return activitiesMapFromDB;
  }
}
0 Answers
Related