[flutter] 플러터(Flutter)에서 상태 관리 방법은?
1. StatefulWidget 사용
StatefulWidget을 사용하여 상태를 관리하는 것은 기본적인 방법입니다. StatefulWidget은 상태가 변경될 때 화면을 다시 그리도록 트리거할 수 있습니다.
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int _counter = 0;
void _increment() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: _increment,
child: Text('$_counter'),
);
}
}
2. Provider 패턴
Provider 패턴을 사용하여 상태를 전역적으로 관리할 수 있습니다. Provider를 이용하면 상태를 관리하고 필요한 곳에서 해당 상태를 사용할 수 있습니다.
class MyModel extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
Provider(
create: (context) => MyModel(),
child: Consumer<MyModel>(
builder: (context, myModel, child) {
return RaisedButton(
onPressed: () => myModel.increment(),
child: Text('${myModel.counter}'),
);
},
),
)
3. Bloc 패턴
Bloc 패턴을 이용하여 비즈니스 로직과 UI를 분리하고 상태를 관리할 수 있습니다. Bloc 패턴은 이벤트와 상태를 통해 구성됩니다.
enum CounterEvent { increment }
class CounterBloc extends Bloc<CounterEvent, int> {
CounterBloc() : super(0);
@override
Stream<int> mapEventToState(CounterEvent event) async* {
if (event == CounterEvent.increment) {
yield state + 1;
}
}
}
위의 방법들은 플러터 애플리케이션에서 상태를 효과적으로 관리하는 방법들 중 일부일 뿐이며, 실제로는 상황에 맞게 적절한 방법을 선택하는 것이 중요합니다.