[flutter] 플러터에서 useDispatch 훅(hook)을 이용한 액션 디스패치

플러터(Flutter) 앱을 개발할 때 Redux나 MobX와 같은 상태 관리 라이브러리를 사용하면 dispatch라는 메서드를 사용하여 액션을 발행하고, 이에 따른 상태 변경을 관리할 수 있습니다. 이런 과정은 지루하고 반복적일 수 있지만, 플러터 훅(hook) 라이브러리 중 하나인 flutter_hooks를 사용하면 상태 관리를 보다 간편하게 할 수 있습니다. useDispatch 훅을 통해 액션을 발행할 수 있습니다.

useDispatch 훅 설치하기

useDispatch 훅을 사용하기 위해서는 flutter_hooks 패키지를 설치해야 합니다. 먼저 pubspec.yaml 파일에 아래와 같이 flutter_hooks를 추가합니다.

dependencies:
  flutter_hooks: ^0.16.0

그런 다음, 터미널에서 아래와 같이 명령어를 실행하여 패키지를 설치합니다.

flutter pub get

useDispatch 훅 사용하기

다음으로, useDispatch 훅을 사용하여 액션을 디스패치하는 방법을 알아보겠습니다. 먼저 해당 앱의 상태 관리 클래스에서 useDispatch를 사용하여 액션을 발행합니다.

import 'package:flutter_hooks/flutter_hooks.dart';

final counterReducer = (int state, String action) {
  if (action == 'increment') {
    return state + 1;
  }
  return state;
};

final counter = StateNotifierProvider<Counter, int>((ref) {
  return Counter();
});

class Counter extends StateNotifier<int> {
  Counter() : super(0);
}

위 코드에서 useDispatch 훅을 사용하여 ‘increment’ 액션을 디스패치하고 있습니다. 이제 플러터 앱에서 해당 액션을 발행하기 위해 사용합니다.

import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final incrementAction = FutureProvider.autoDispose<void>((ref) {
  return ref.read(counter.notifier).dispatch('increment');
});

위 코드에서, flutter_hooksflutter_riverpod 패키지를 가져오고 있는 것을 볼 수 있습니다.

결론

이제 useDispatch 훅을 사용하여 플러터(Flutter) 앱에서 액션을 간편하게 디스패치하는 방법에 대해 알아보았습니다. useDispatch 훅을 사용하면 반복적이고 번거로운 작업을 줄일 수 있어 상태 관리를 보다 효율적으로 할 수 있습니다.