[flutter] 플러터 프로바이더를 사용한 앱 전역 상태 관리
플러터 앱을 개발하다 보면 상태 관리가 중요한 이슈 중 하나입니다. 플러터에서는 프로바이더(Provider) 라이브러리를 사용하여 앱의 전역 상태를 효과적으로 관리할 수 있습니다. 이번 글에서는 프로바이더를 사용하여 플러터 앱의 전역 상태를 관리하는 방법에 대해 알아보겠습니다.
프로바이더란?
플러터의 프로바이더는 앱의 상태 관리를 단순화하고, 더 깔끔한 코드를 작성할 수 있도록 도와주는 패키지입니다. 이를 통해 상태를 관리하고 필요한 위젯들에게 데이터를 제공할 수 있습니다.
프로바이더 사용하기
먼저, pubspec.yaml
파일에 아래와 같이 프로바이더 패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
provider: ^5.0.0
다음으로, main.dart
파일에서 프로바이더 패키지를 임포트합니다.
import 'package:provider/provider.dart';
모델 클래스 생성
앱 전역에서 사용할 데이터 모델 클래스를 생성합니다.
class AppStateModel extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void incrementCounter() {
_counter++;
notifyListeners();
}
}
프로바이더 제공
이제 위에서 생성한 AppStateModel
을 프로바이더를 통해 앱 전역에서 사용할 수 있도록 제공합니다.
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => AppStateModel(),
child: MyApp(),
),
);
}
상태 사용
이제 상태를 사용할 위젯에서 Provider.of
메서드를 사용하여 데이터에 접근할 수 있습니다.
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appState = Provider.of<AppStateModel>(context);
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'횟수:',
),
Text(
'${appState.counter}',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => appState.incrementCounter(),
tooltip: '증가',
child: Icon(Icons.add),
),
);
}
}
결론
프로바이더를 사용하면 앱 전역에서 상태를 효과적으로 관리할 수 있으며, 위젯들 간의 데이터 공유가 간편해집니다. 프로바이더를 통해 앱의 상태를 관리하는 방법에 대해 알아보았는데, 다음에는 프로바이더를 조금 더 복잡한 앱 상태에 적용하는 방법에 대해 알아보겠습니다.
참고문헌: 플러터 공식 문서 - Provider