Освоение операций с базой данных во Flutter: подробное руководство

Flutter, популярный кроссплатформенный фреймворк, завоевал огромную популярность среди разработчиков благодаря созданию красивых и производительных мобильных приложений. Одним из важнейших аспектов разработки любого мобильного приложения является управление данными с помощью базы данных. В этой статье блога мы рассмотрим различные методы и приемы выполнения операций с базами данных во Flutter, используя как локальные, так и удаленные базы данных. Итак, пристегнитесь и приготовьтесь освоить операции с базой данных во Flutter!

  1. Операции с базой данных SQLite:

SQLite — это легкий и широко используемый механизм базы данных, который можно легко интегрировать в приложения Flutter. Для выполнения операций CRUD (создание, чтение, обновление, удаление) вы можете использовать пакет sqflite. Вот краткий обзор методов:

  • Создание базы данных и таблицы:

    final database = await openDatabase(path, version: 1,
    onCreate: (Database db, int version) async {
    await db.execute('CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT)');
    });
  • Вставка данных в таблицу:

    await database.insert('Test', {'name': 'John Doe'});
  • Получение данных из таблицы:

    final List<Map<String, dynamic>> result = await database.query('Test');
  • Обновление данных:

    await database.update('Test', {'name': 'Jane Doe'}, where: 'id = ?', whereArgs: [1]);
  • Удаление данных:

    await database.delete('Test', where: 'id = ?', whereArgs: [1]);
  1. Объектно-реляционное сопоставление (ORM):

Если вы предпочитаете работать с объектами, а не с необработанными SQL-запросами, вы можете использовать библиотеку объектно-реляционного сопоставления (ORM), например moorили sqfentity. Эти библиотеки предоставляют абстракцию более высокого уровня для работы с базами данных во Flutter, позволяя определять схемы баз данных с помощью кода Dart и выполнять операции с использованием объектно-ориентированного синтаксиса.

Вот пример использования пакета moor:

  • Определение таблицы с помощью Moor:

    class Tasks extends Table {
    IntColumn get id => integer().autoIncrement()();
    TextColumn get title => text()();
    }
  • Вставка данных:

    await into(tasks).insert(TasksCompanion.insert(title: 'Task 1'));
  • Запрос данных:

    final tasks = await select(tasks).get();
  • Обновление данных:

    await update(tasks).replace(TasksCompanion(id: Value(1), title: Value('Updated Task')));
  • Удаление данных:

    await delete(tasks).delete();
  1. База данных реального времени Firebase:

Если вы создаете приложение Flutter, требующее синхронизации данных в реальном времени, база данных Firebase Realtime — мощное решение. Firebase предоставляет простой в использовании SDK, который можно интегрировать в приложения Flutter.

  • Настройка Firebase:
    Сначала следуйте инструкциям по настройке Firebase для Flutter. Затем инициализируйте приложение Firebase в своем коде Flutter.

  • Запись данных в базу данных:

    final databaseReference = FirebaseDatabase.instance.reference();
    await databaseReference.child('users').push().set({
    'name': 'John Doe',
    'email': 'johndoe@example.com',
    });
  • Чтение данных из базы данных:

    final databaseReference = FirebaseDatabase.instance.reference();
    databaseReference.child('users').once().then((DataSnapshot snapshot) {
    print(snapshot.value);
    });
  • Обновление и удаление данных:

    await databaseReference.child('users').child('userId').update({
    'name': 'Jane Doe',
    });
    await databaseReference.child('users').child('userId').remove();
  1. Локальное хранилище:

Для простых требований к хранению ключей и значений вы можете использовать пакет shared_preferencesво Flutter. Это позволяет постоянно хранить на устройстве небольшие объемы данных.

  • Запись данных:

    final prefs = await SharedPreferences.getInstance();
    await prefs.setString('username', 'JohnDoe');
  • Чтение данных:

    final prefs = await SharedPreferences.getInstance();
    final username = prefs.getString('username');
  • Удаление данных:

    final prefs = await SharedPreferences.getInstance();
    await prefs.remove('username');

В этой статье мы рассмотрели различные методы выполнения операций с базой данных во Flutter. Мы рассмотрели SQLite для локальных баз данных, библиотеки ORM для объектно-ориентированного взаимодействия с базами данных, базу данных Firebase Realtime для синхронизации в реальном времени и LocalStorage для простого хранения значений ключа. Освоив эти методы, вы будете готовы решать широкий спектр задач, связанных с базами данных, в ваших приложениях Flutter. Приятного кодирования!