[flutter] 플러터 TimePicker의 시간 선택 제한 기능
TimeRangePicker 패키지 활용하기
TimePicker의 시간 선택 제한 기능을 구현하기 위해서는 TimeRangePicker 패키지를 사용할 수 있습니다. 이 패키지는 특정 시간 범위를 지정하여 TimePicker에서 가능한 시간 선택을 제한할 수 있습니다.
TimeRangePicker 패키지를 사용하기 위해서는 우선 time_range_picker
패키지를 pubspec.yaml
파일에 추가해야 합니다:
dependencies:
time_range_picker: ^1.0.1
이제 패키지를 프로젝트에 추가했으니, 아래와 같은 코드를 사용하여 TimePicker를 구현할 수 있습니다:
import 'package:flutter/material.dart';
import 'package:time_range_picker/time_range_picker.dart';
class TimePickerPage extends StatefulWidget {
@override
_TimePickerPageState createState() => _TimePickerPageState();
}
class _TimePickerPageState extends State<TimePickerPage> {
TimeRange timeRange;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TimePicker'),
),
body: Center(
child: RaisedButton(
child: Text('시간 선택'),
onPressed: () {
showTimeRangePicker(
context: context,
start: TimeOfDay(hour: 9, minute: 0),
end: TimeOfDay(hour: 18, minute: 0),
interval: Duration(minutes: 15),
disable: ['12:30', '15:00-16:00'],
).then((value) {
if (value != null) {
setState(() {
timeRange = value;
});
}
});
},
),
),
bottomNavigationBar: timeRange != null
? BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: Icon(Icons.timer),
title: Text('시작 시간: ${timeRange.start.format(context)}'),
),
BottomNavigationBarItem(
icon: Icon(Icons.timer_off),
title: Text('종료 시간: ${timeRange.end.format(context)}'),
),
],
)
: null,
);
}
}
위의 코드에서 showTimeRangePicker
함수를 사용하여 TimePicker를 호출하고, start와 end 매개변수를 사용하여 시간 범위를 지정합니다. 또한 interval
매개변수로 시간 간격을 설정할 수도 있습니다.
disable
매개변수는 선택하지 못하게 할 특정 시간들을 설정하기 위해 사용합니다. ‘HH:mm’ 형식의 시간들 또는 ‘HH:mm-HH:mm’ 형식의 시간 범위들을 지정할 수 있습니다.
TimePicker에서 선택한 시간은 timeRange
변수에 저장되어 화면 하단의 bottomNavigationBar에 표시됩니다.
이제 TimeRangePicker를 사용하여 시간 선택을 제한하는 기능을 구현할 수 있게 되었습니다. 플러터에서 TimePicker를 사용할 때 이러한 기능이 필요하다면 TimeRangePicker 패키지를 활용해보세요.