[flutter] Redux를 사용하지 않고도 플러터 앱에서 상태 관리를 할 수 있을까요?

플러터는 상태 관리를 위해 Redux와 같은 라이브러리를 사용할 수 있지만 Redux를 사용하지 않고도 상태 관리를 할 수 있습니다. 이러한 방법 중에는 Provider 패키지를 사용하는 것이 있습니다. Provider는 플러터에서 쉽고 간편한 상태 관리를 제공하는 패키지입니다.

Provider를 사용하면 앱 전체에서 상태를 공유하고 업데이트할 수 있습니다. 다음은 Provider를 사용하여 간단한 카운터 앱의 상태 관리를 하는 예시입니다.

먼저, provider 패키지를 pubspec.yaml 파일에 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  provider: ^5.0.0

다음으로, main.dart 파일에 다음 코드를 추가해주세요.

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (context) => Counter(),
      child: MaterialApp(
        title: 'Flutter Provider Example',
        home: HomePage(),
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final counter = Provider.of<Counter>(context);

    return Scaffold(
      appBar: AppBar(
        title: Text('Provider Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Count: ${counter.count}',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                counter.increment();
              },
              child: Text('Increment'),
            ),
          ],
        ),
      ),
    );
  }
}

class Counter extends ChangeNotifier {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();
  }
}

위의 코드에서 ChangeNotifierProvider 위젯은 Counter 클래스를 프로바이더로 등록합니다. Counter 클래스는 ChangeNotifier를 상속하며, increment 함수를 통해 카운터의 값을 증가시키고, notifyListeners를 호출하여 위젯들에게 상태 변경을 알립니다.

HomePage 위젯에서는 Provider.of<Counter>(context)를 통해 Counter 객체에 접근하고, 상태를 출력하고 증가시킬 수 있습니다.

이제 앱을 실행하면 카운터가 나타나고 버튼을 누를 때마다 값이 증가하는 것을 확인할 수 있습니다. Provider는 앱 전체에서 상태를 관리하고 업데이트할 수 있는 간단하고 효과적인 방법입니다.

추가로, Provider는 다양한 방법으로 사용될 수 있으며, 복잡한 앱에서도 효율적인 상태 관리를 제공할 수 있습니다. 자세한 내용은 Provider 패키지의 공식 문서를 참조하세요.