[flutter] 플러터에서 useTimer 훅(hook)을 사용한 예약 시스템 구현
플러터 앱에서 예약 시스템을 구현하려면 타이머를 활용하여 일정 시간 후에 작업을 수행할 수 있어야 합니다. useTimer 훅을 사용하면 이러한 기능을 구현할 수 있습니다. 이 훅은 타이머를 관리하고 시간이 경과한 후에 원하는 작업을 실행할 수 있도록 해줍니다.
useState 훅을 사용하여 타이머 상태 관리
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:hooks_riverpod/all.dart';
final timerProvider = StateProvider((ref) => 0);
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Reservation System'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
context.read(timerProvider).state = 10; // 예약 시간 설정 (초 단위)
},
child: Text('10초 후에 예약하기'),
),
),
),
);
}
}
위 코드에서는 timerProvider를 정의하고, useState 훅을 사용하여 타이머 상태를 관리했습니다. 버튼을 누르면 예약 시간을 10초로 설정하도록 하였습니다.
useTimer 훅을 사용하여 예약 시간 관리
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:hooks_riverpod/all.dart';
Widget TimerComponent() {
return Consumer(
builder: (context, watch, child) {
final timerState = watch(timerProvider); // 타이머 상태 가져오기
if (timerState.state > 0) {
Future.delayed(Duration(seconds: timerState.state), () {
// 예약 시간이 되면 수행할 작업
print('예약 시스템 - 예약 완료');
watch(timerProvider).state = 0; // 타이머 초기화
});
}
return Text('예약 중: ${timerState.state} 초 남음');
},
);
}
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Reservation System'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
context.read(timerProvider).state = 10; // 예약 시간 설정 (초 단위)
},
child: Text('10초 후에 예약하기'),
),
TimerComponent(), // 예약 시간 표시
],
),
),
),
);
}
}
위 코드는 useTimer 훅을 사용하여 예약 시간을 관리하는 컴포넌트를 작성한 예제입니다. TimerComponent와 같은 컴포넌트를 사용하여 상태를 화면에 표시하고, 예약 시간이 되면 원하는 작업을 실행할 수 있도록 구현했습니다.
플러터에서 useTimer 훅을 사용하면 예약 시스템을 쉽게 구현할 수 있습니다. 이를 활용하여 다양한 예약 기능을 개발할 수 있을 것입니다.
참고문헌: