[flutter] 플러터 프로바이더를 사용하여 지하철 도착 정보 가져오기

플러터(Flutter) 앱을 개발할 때, 다른 위젯들이 공유하는 상태를 관리하는 것은 매우 중요합니다. 프로바이더(Provider) 패키지는 플러터 애플리케이션에서 상태를 관리하고 공유하기 위한 효율적인 방법을 제공합니다. 이번에는 프로바이더를 사용하여 지하철 도착 정보를 가져오는 예제를 살펴보겠습니다.

프로바이더 패키지 추가하기

먼저, pubspec.yaml 파일에 프로바이더 패키지를 추가해야 합니다. 아래와 같이 의존성을 추가하세요.

dependencies:
  flutter:
    sdk: flutter
  provider: ^5.0.0

의존성을 추가한 후에는 터미널에서 flutter pub get 명령을 실행하여 패키지를 설치하세요.

모델 및 데이터 가져오기

이번 예제에서는 지하철 도착 정보를 가지고 오기 위한 모델 클래스를 생성하고, 해당 정보를 가져오는 메소드를 작성해야 합니다. 아래는 간단한 SubwayArrival 모델 클래스와 도착 정보를 가져오는 fetchSubwayArrival 메소드의 예제입니다.

class SubwayArrival {
  final String stationName;
  final List<String> arrivalTimes;

  SubwayArrival(this.stationName, this.arrivalTimes);
}

Future<SubwayArrival> fetchSubwayArrival(String stationCode) async {
  // 지하철 도착 정보 가져오는 비동기 작업
  // ...
}

프로바이더 설정하기

이제 프로바이더를 설정하여 상태를 관리하고, 다른 위젯에서 공유할 수 있는 상태 관리 클래스를 생성합니다. 이 클래스는 ChangeNotifier를 상속받고, 상태 및 해당 상태를 변경하는 메소드를 포함해야 합니다.

import 'package:flutter/foundation.dart';

class SubwayArrivalProvider extends ChangeNotifier {
  SubwayArrival? _subwayArrival;

  void fetchAndSetArrivalInfo(String stationCode) async {
    final arrivalInfo = await fetchSubwayArrival(stationCode);
    _subwayArrival = arrivalInfo;
    notifyListeners();
  }

  // 기타 상태를 변경하는 메소드들
  // ...
}

사용하기

마지막으로 화면에서 프로바이더를 사용하여 도착 정보를 가져오고, 화면에 표시하는 방법을 확인합니다.

final subwayArrivalProvider = context.read<SubwayArrivalProvider>();
subwayArrivalProvider.fetchAndSetArrivalInfo('stationCode');

위와 같이 Provider 클래스를 이용해 필요한 상태를 가져온 뒤, 사용하고자 하는 화면에서 필요한 위젯들을 프로바이더를 이용하여 조작할 수 있습니다.

프로바이더를 사용하면 다른 위젯들이 공유하는 상태를 효율적으로 관리할 수 있으며, 앱의 성능과 유지보수를 향상시킬 수 있습니다.

이상으로, 프로바이더를 사용하여 지하철 도착 정보를 가져오는 방법에 대해 알아보았습니다. 이를 활용하여 여러분만의 애플리케이션에서 프로바이더를 사용해보시기 바랍니다.