Настройка Hive базы данных во Flutter-приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка Hive базы данных во Flutter-приложении
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Настройка Hive базы данных во Flutter-приложении

Hive — NoSQL key-value хранилище для Flutter, написанное на чистом Dart без нативных зависимостей. Работает на всех платформах: iOS, Android, Web, Desktop. Основное преимущество — скорость: операции чтения в разы быстрее SQLite для простых объектов, потому что Hive хранит данные в бинарном формате и держит часто используемые боксы в памяти.

Что настраиваем

Подключение в pubspec.yaml:

dependencies:
  hive: ^2.2.3
  hive_flutter: ^1.1.0

dev_dependencies:
  hive_generator: ^2.0.1
  build_runner: ^2.4.6

Инициализация в main() перед runApp:

await Hive.initFlutter();
Hive.registerAdapter(UserAdapter());
await Hive.openBox<User>('users');
runApp(const MyApp());

TypeAdapters для кастомных объектов. Hive не умеет хранить произвольные Dart-классы без адаптера. Аннотируем модель:

@HiveType(typeId: 0)
class User extends HiveObject {
  @HiveField(0)
  late String id;

  @HiveField(1)
  late String name;
}

Запускаем кодогенерацию: flutter pub run build_runner build. Генерируется user.g.dart с UserAdapter. typeId должен быть уникальным во всём приложении — конфликт typeId приводит к HiveError при открытии бокса.

Encrypted box. Для чувствительных данных (токены, личные данные пользователя) используем зашифрованный бокс. Ключ шифрования генерируется через Hive.generateSecureKey() и сохраняется в flutter_secure_storage — не в SharedPreferences и не в самом Hive:

final secureStorage = const FlutterSecureStorage();
var encryptionKey = await secureStorage.read(key: 'hive_key');
if (encryptionKey == null) {
  final key = Hive.generateSecureKey();
  await secureStorage.write(key: 'hive_key', value: base64Url.encode(key));
  encryptionKey = base64Url.encode(key);
}
final encryptedBox = await Hive.openBox('secureBox',
  encryptionCipher: HiveAesCipher(base64Url.decode(encryptionKey)));

Типичные ошибки

Открывать бокс несколько раз — Hive.openBox для уже открытого бокса возвращает существующий экземпляр, но если вызвать Hive.box('name') до открытия — получим HiveError: Box not found. Рекомендую открывать все нужные боксы в main(), а в коде обращаться через Hive.box<T>('name').

Забыть закрыть боксы при завершении — Hive.close() в dispose() или через WidgetsBindingObserver. В продакшене на iOS это может вызвать потерю данных при форс-закрытии приложения.

Сроки

Настройка Hive с базовыми CRUD-операциями и 2–3 моделями: 4–8 часов. С шифрованием и кодогенерацией под весь проект: 1–2 дня. Стоимость рассчитывается индивидуально.