[flutter] 플러터 프로바이더를 사용한 데이터 통신

플러터에서 상태 관리와 데이터 통신을 용이하게 처리하기 위해서는 프로바이더(Provider) 패키지를 사용할 수 있습니다. 이 패키지는 플러터 애플리케이션의 상태 관리와 데이터 전파를 쉽게 구현할 수 있도록 도와줍니다.

프로바이더란 무엇인가요?

프로바이더 패키지는 ChangeNotifierConsumer를 포함한 여러 유용한 클래스와 함수를 제공합니다. ChangeNotifier 클래스는 모델 또는 데이터의 변화를 감지하고, 해당 변화를 리스너들에게 알려주는 역할을 합니다.

Consumer는 데이터가 변경됐을 때 알림을 받아 소비하는 위젯입니다.

프로바이더를 이용한 데이터 통신 구현하기

다음은 예제 코드입니다.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

// 모델 클래스
class DataModel extends ChangeNotifier {
  String _data = 'Initial data'; // 초기 데이터

  String get data => _data;

  void updateData(String newData) {
    _data = newData;
    notifyListeners(); // 데이터 변경 시 알림
  }
}

// UI
class DataScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Data Communication'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Consumer<DataModel>(
              builder: (context, data, child) {
                return Text(data.data); // 데이터 표시
              },
            ),
            RaisedButton(
              onPressed: () {
                Provider.of<DataModel>(context, listen: false).updateData('New data'); // 데이터 변경
              },
              child: Text('Change Data'),
            )
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(
    // ChangeNotifierProvider를 이용한 데이터 모델 공유
    ChangeNotifierProvider(
      create: (context) => DataModel(),
      child: MaterialApp(
        home: DataScreen(),
      ),
    ),
  );
}

위 코드는 DataModel 클래스를 생성하여 데이터를 관리하고, DataScreen 위젯에서 해당 데이터를 소비하고 변경하는 예제입니다.

결론

플러터에서 데이터 통신과 상태 관리를 위해 프로바이더를 사용하는 방법에 대해 알아보았습니다. 프로바이더는 간단하면서도 효율적으로 데이터를 관리하는 데 도움이 되므로, 애플리케이션 개발 시 유용하게 활용할 수 있습니다.