Programming/Flutter

Flutter 인기 라이브러리 - Hive 데이터베이스

나쵸캣 2024. 5. 8. 14:41
반응형

Flutter Hive는 Flutter 앱에서 로컬 데이터베이스를 관리하기 위한 빠르고 간편한 방법을 제공하는 패키지입니다. Hive는 데이터를 키-값 쌍으로 저장하고 검색할 수 있는 가벼운 데이터베이스로, Flutter 애플리케이션의 로컬 상태를 유지하거나 오프라인 모드에서 작동하는 애플리케이션을 개발하는 데 사용됩니다.

Hive는 빠른 성능과 간편한 사용을 제공하기 위해 고안되었습니다. 그것은 단순한 API와 직렬화 라이브러리를 통해 데이터를 저장하고 검색할 수 있습니다. 또한 빠른 데이터 읽기와 쓰기를 지원하며, 앱이 메모리나 디스크에 대규모 데이터를 저장할 때도 높은 성능을 유지합니다.

Hive는 오프라인 데이터 저장, 사용자 설정, 캐시 등 다양한 용도로 사용될 수 있습니다. 또한 Flutter의 생태계와 통합이 원활하며, Flutter 앱의 상태 관리 및 데이터 관리를 위한 강력한 도구로 자리 잡고 있습니다.

 

 

먼저, pubspec.yaml 파일에 Hive 패키지를 추가합니다.

 dependencies:
  flutter:
    sdk: flutter
  hive: ^1.4.4+1

 

 

그런 다음 pub get 명령어를 사용하여 패키지를 설치합니다.

다음으로, Hive를 사용하여 간단한 앱 상태를 저장하고 검색하는 예제 코드를 보여드리겠습니다.

import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart' as path_provider;

void main() async {
  // 앱이 시작될 때 Hive 초기화
  WidgetsFlutterBinding.ensureInitialized();
  // 앱의 로컬 디렉토리에 Hive 박스를 생성
  final appDocumentDir = await path_provider.getApplicationDocumentsDirectory();
  Hive.init(appDocumentDir.path);
  
  // Hive 박스 열기
  await Hive.openBox('myBox');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Hive 예제',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  final String boxName = 'myBox';
  final String key = 'name';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Hive 예제'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              onPressed: _saveData,
              child: Text('데이터 저장'),
            ),
            RaisedButton(
              onPressed: _readData,
              child: Text('데이터 읽기'),
            ),
          ],
        ),
      ),
    );
  }

  // 데이터 저장
  void _saveData() async {
    var box = await Hive.openBox(boxName);
    await box.put(key, 'Flutter Hive');
    print('데이터 저장 완료');
  }

  // 데이터 읽기
  void _readData() async {
    var box = await Hive.openBox(boxName);
    String data = box.get(key, defaultValue: '데이터 없음');
    print('저장된 데이터: $data');
  }
}
 

이 예제에서는 사용자가 버튼을 클릭할 때마다 데이터를 저장하거나 읽는 기능을 제공합니다. Hive를 사용하여 간단하게 데이터를 저장하고 검색할 수 있습니다.

반응형