[flutter] 플러터에서 useTimer 훅(hook)을 이용한 시간 관리 기능 구현

플러터(Flutter)에서 상태 관리를 위해 훅(hook)을 사용하는 것은 매우 편리합니다. 특히, 타이머 기능을 구현할 때 useTimer 훅을 사용하면 매우 유용합니다. 이번 글에서는 플러터에서 useTimer 훅을 이용하여 간단한 시간 관리 기능을 구현하는 방법을 살펴보겠습니다.

useTimer 훅 소개

useTimer 훅은 특정 시간 간격으로 작업을 수행하거나 일정 시간 동안 작업을 수행하는 데 사용됩니다. 이를 통해 앱에서 시간 관리와 관련된 다양한 작업을 구현할 수 있습니다.

시간 관리 기능 구현

플러터 프로젝트에서 상태 관리를 위해 provider 패키지를 사용한다고 가정하고, useTimer 훅을 사용하여 시간 관리 기능을 구현하는 방법은 다음과 같습니다.

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

final timerProvider = StateProvider<Timer>((ref) {
  return Timer();
});

class Timer {
  int _seconds = 0;
  bool _isRunning = false;

  void startTimer() {
    _isRunning = true;
    Future.doWhile(() async {
      await Future.delayed(Duration(seconds: 1));
      _seconds++;
      return _isRunning;
    });
  }

  void stopTimer() {
    _isRunning = false;
  }

  int get seconds => _seconds;
}

class TimerWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final timer = context.read(timerProvider);
    return Column(
      children: [
        Text('Timer: ${timer.state.seconds}'),
        ElevatedButton(
          onPressed: () {
            if (timer.state._isRunning) {
              timer.state.stopTimer();
            } else {
              timer.state.startTimer();
            }
          },
          child: Text(timer.state._isRunning ? 'Stop' : 'Start'),
        ),
      ],
    );
  }
}

void main() {
  runApp(
    ProviderScope(
      child: MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('Timer Example'),
          ),
          body: TimerWidget(),
        ),
      ),
    ),
  );
}

위 코드는 플러터 앱에서 useTimer 훅을 이용하여 간단한 타이머를 구현한 예시입니다. 이를 통해 플러터에서 useTimer 훅을 사용하여 시간 관리 기능을 구현할 수 있습니다.

마무리

이 글에서는 플러터에서 useTimer 훅을 이용하여 시간 관리 기능을 구현하는 방법에 대해 알아보았습니다. useTimer 훅을 사용하면 간단하게 타이머와 관련된 기능을 구현할 수 있으므로, 필요한 경우에 활용해보시기 바랍니다.