[flutter] Dio를 사용하여 서버로부터 받은 데이터를 데이터베이스에 저장하는 방법을 알려주세요.

Dio는 Flutter 앱에서 HTTP 요청을 만들기 위한 강력한 패키지입니다. 이 패키지를 사용하여 서버로부터 받은 데이터를 SQLite 데이터베이스에 저장하는 방법을 알아보겠습니다.

1. Dio 패키지 추가

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

dependencies:
  dio: ^4.0.0

그런 다음 터미널에서 다음 명령을 실행하여 패키지를 가져옵니다.

flutter pub get

2. SQLite 데이터베이스 설정

Flutter 앱에 SQLite 데이터베이스를 설정합니다. sqflite 패키지를 사용하여 데이터베이스를 생성하고, path 패키지를 사용하여 데이터베이스 파일의 경로를 설정합니다. 데이터 모델을 만들고, 데이터베이스 연결을 설정합니다.

3. Dio를 사용하여 데이터 받아오기

Dio를 사용하여 서버로부터 데이터를 받아옵니다. 그 후 받아온 데이터를 데이터 모델로 변환하고, SQLite 데이터베이스에 저장합니다.

예를 들어, 사용자 정보를 서버로부터 받아오고 SQLite 데이터베이스에 저장하는 코드는 다음과 같을 수 있습니다.

import 'package:dio/dio.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

final dio = Dio();

Future<void> fetchDataAndSaveToDatabase() async {
  try {
    // 서버로부터 데이터 가져오기
    Response response = await dio.get('https://example.com/data');
    Map<String, dynamic> data = response.data;

    // 데이터 모델로 변환
    User user = User.fromJson(data);

    // 데이터베이스에 저장
    final db = await openDatabase(
      join(await getDatabasesPath(), 'app_database.db'),
      onCreate: (db, version) {
        return db.execute(
          'CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
        );
      },
      version: 1,
    );

    // 사용자 정보 데이터베이스에 저장
    await db.insert(
      'users',
      user.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  } catch (e) {
    print('Error: $e');
  }
}

위의 예제 코드는 Dio를 사용하여 서버로부터 데이터를 가져와서 SQLite 데이터베이스에 저장하는 간단한 예시입니다.

이제 Dio를 사용하여 서버로부터 데이터를 가져와서 데이터베이스에 저장하는 방법을 알 수 있었습니다. 계속해서 데이터를 가져와서 UI에 표시하거나, 내부적으로 사용할 수 있습니다.

참고자료