[flutter] 플러터 프로바이더를 사용한 데이터 통신
플러터에서 상태 관리와 데이터 통신을 용이하게 처리하기 위해서는 프로바이더(Provider)
패키지를 사용할 수 있습니다. 이 패키지는 플러터 애플리케이션의 상태 관리와 데이터 전파를 쉽게 구현할 수 있도록 도와줍니다.
프로바이더란 무엇인가요?
프로바이더 패키지는 ChangeNotifier
와 Consumer
를 포함한 여러 유용한 클래스와 함수를 제공합니다. 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
위젯에서 해당 데이터를 소비하고 변경하는 예제입니다.
결론
플러터에서 데이터 통신과 상태 관리를 위해 프로바이더를 사용하는 방법에 대해 알아보았습니다. 프로바이더는 간단하면서도 효율적으로 데이터를 관리하는 데 도움이 되므로, 애플리케이션 개발 시 유용하게 활용할 수 있습니다.