Налаштування 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
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Налаштування бази даних Hive в Flutter-додатку

Hive — це NoSQL сховище ключ-значення для 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 при відкритті боксу.

Зашифрований бокс. Для чутливих даних (токени, облікові дані користувача) використовуйте зашифрований бокс. Ключ шифрування генерується через 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. В production на iOS це може привести до втрати даних, якщо додаток буде примусово закритий.

Часові рамки

Налаштування Hive з базовими CRUD-операціями і 2–3 моделями: 4–8 годин. З шифруванням і генерацією коду по всьому проекту: 1–2 дні. Вартість розраховується індивідуально.