Skip to content

Instantly share code, notes, and snippets.

@Sameerkash
Created July 8, 2020 12:30
Show Gist options
  • Save Sameerkash/7477c23e9deb0d4dc0d1f136605746ae to your computer and use it in GitHub Desktop.
Save Sameerkash/7477c23e9deb0d4dc0d1f136605746ae to your computer and use it in GitHub Desktop.
class LocalStorage {
  static const DBNAME = "todos";

  final _todosStore = intMapStoreFactory.store();

  Future<Database> get _db async => await AppDatabase.instance.database;


  Future<void> saveTodo(Todo todo) async {
    try {
      await _todosStore.add(await _db, todo.toJson());
    } catch (e) {
      print("$e");
    }
  }

  Future<void> updateTodo(Todo todo) async {
    try {
      final finder = Finder(filter: Filter.equals('id', todo.id));

      await _todosStore.update(await _db, todo.toJson(), finder: finder);
    } catch (e) {
      print("$e");
    }
  }

  Future<List<Todo>> getTodos() async {
    final recordSnapshots = await _todosStore.find(await _db);

    List<Todo> _todos = [];
    recordSnapshots.forEach((todo) {
      Todo todoitem = Todo.fromJson(todo.value);
      _todos.add(todoitem);
    });
    return _todos;
  }

  Future<void> deleteTodos(Todo todo) async {
    final finder = Finder(filter: Filter.equals('id', todo.id));
    await _todosStore.delete(await _db, finder: finder);
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment