[flutter] 플러터 프로바이더를 사용하여 데이터 캐싱하기

플러터 앱에서 데이터를 효율적으로 관리하고 캐싱하기 위해 Provider 패키지를 사용할 수 있습니다. Provider는 앱 전반에 걸쳐 데이터를 제공하고 관리하는 데 도움이 되는 패키지입니다. 이번 글에서는 Provider를 사용하여 데이터를 캐싱하는 방법에 대해 알아보겠습니다.

Provider 패키지 추가하기

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

dependencies:
  flutter:
    sdk: flutter
  provider: ^6.0.0

그리고 패키지를 가져와서 사용할 수 있도록 pub get 명령어를 실행합니다.

데이터 모델 생성하기

데이터 캐싱을 위해 먼저 데이터 모델을 생성해야 합니다. 예를 들어, 간단한 사용자 정보를 저장하는 데이터 모델을 만들어보겠습니다.

class User {
  final int id;
  final String name;

  User({required this.id, required this.name});
}

데이터를 제공하는 프로바이더 생성하기

이제 데이터를 제공하는 프로바이더를 생성합니다. 프로바이더는 데이터를 제공하고 관리하는 역할을 합니다.

import 'package:flutter/material.dart';

class UserProvider extends ChangeNotifier {
  User? _user;

  void setUser(User user) {
    _user = user;
    notifyListeners();
  }

  User? get user => _user;
}

위 코드에서는 ChangeNotifier를 상속한 UserProvider를 만들고, setUser 메서드를 사용하여 사용자 데이터를 설정하고, notifyListeners 메서드를 호출하여 데이터가 변경되었음을 Provider에게 알립니다.

데이터 캐싱하기

이제 화면에서 사용자 데이터를 캐싱하고 화면 간에 데이터를 공유하기 위해 Provider를 사용할 수 있습니다. 캐싱된 데이터를 사용하는 예제 코드는 다음과 같습니다.

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<UserProvider>(context).user;

    return Scaffold(
      appBar: AppBar(
        title: Text('User Profile'),
      ),
      body: Center(
        child: user != null
            ? Text('User ID: ${user.id}, Name: ${user.name}')
            : Text('No user data available'),
      ),
    );
  }
}

위 코드에서는 UserProvider에서 사용자 데이터를 가져와 화면에 표시하는 방법을 보여줍니다.

이와 같이, Provider를 사용하여 데이터를 캐싱하고 관리함으로써 화면 간에 데이터를 효율적으로 전달하고 관리할 수 있습니다.

이상으로, 플러터 프로바이더를 사용하여 데이터를 캐싱하는 방법에 대해 알아보았습니다.