개발/Flutter

상태관리(State Management) 개념

파란검정 2023. 4. 4. 00:46
반응형

상태관리(State Management)는 애플리케이션의 상태를 관리하는 방법입니다.

애플리케이션의 상태란 사용자 입력, 네트워크 요청, 데이터 변경 등에 의해 변하는 값들을 말합니다. 이러한 상태를 관리하는 것은 애플리케이션의 성능과 사용자 경험을 개선하는 데 매우 중요합니다.

Flutter에서는 여러 가지 상태관리 방법을 제공합니다.

 


가장 기본적인 방법은 StatefulWidget을 이용하여 상태를 관리하는 것입니다.
StatefulWidget은 상태가 변경될 때마다 화면을 다시 그립니다.

 

 

또 다른 방법으로는 Provider 패키지를 이용하는 것이 있습니다. Provider는 InheritedWidget을 이용하여 상태를 관리하며, 상태가 변경될 때마다 화면을 다시 그리지 않아도 되기 때문에 성능이 우수합니다. 그 외에도 BLoC, Redux, MobX 등의 상태관리 패턴을 이용할 수 있습니다.

 

 

이러한 상태관리 방법을 적절히 선택하여 애플리케이션의 성능과 유지보수성을 높일 수 있습니다.

 

 

아래는 flutter 프로젝트를 작성하면 기본으로 작성되는 코드로 StatefulWidget을 이용한 간단한 카운터 애플리케이션입니다.
버튼을 누르면 카운트가 증가하며, 해당 카운트 값을 화면에 출력합니다.

import 'package:flutter/material.dart';

class CounterApp extends StatefulWidget {
  @override
  _CounterAppState createState() => _CounterAppState();
}

class _CounterAppState extends State<CounterApp> {
  int _count = 0;

  void _incrementCounter() {
    setState(() {
      _count++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Counter App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Count:',
              ),
              Text(
                '$_count',
                style: Theme.of(context).textTheme.headline4,
              ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: _incrementCounter,
          tooltip: 'Increment',
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

 

 

이 코드에서 CounterApp 클래스는 StatefulWidget을 상속하고 있습니다.

상태는 _CounterAppState 클래스에서 관리하며, _count 변수에 현재 카운트 값을 저장합니다. _incrementCounter 메서드는 버튼을 누를 때마다 _count 값을 증가시키고, setState 메서드를 호출하여 화면을 다시 그리도록 합니다. 이렇게 함으로써 상태가 변경될 때마다 화면이 업데이트됩니다.

 

 

위 코드를 실행하면 버튼을 누를 때마다 카운트 값이 증가하는 것을 확인할 수 있습니다. 이와 같이 StatefulWidget을 이용하면 상태를 간단하게 관리할 수 있습니다.

반응형