달력이나 시계를 출력해서 날짜나 시간을 고르는 메소드에 대해서 메모.
직접 위젯을 만들려먼 매우매우 성가신 일이 될 텐데 flutter에서는 이러한 위젯도 간단?하게 구현 할 수 있도록 만들어져있다!
위 세개의 메소드들은 Future<DateTime?>타입을 return한다.
ListTile(
onTap: () async {
final date = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2024),
);
print(date);
...
ListTile(
onTap: () async {
final time = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
);
print(time);
...
ListTile(
onTap: () async {
final booking = await showDateRangePicker(
context: context,
firstDate: DateTime.now(),
lastDate: DateTime(2025),
);
print(booking);
글자가 보이지 않을 경우 builder에 값을 넣어서 색상을 정해줄 수 있다. 밑에 처럼 코드를 적으면 기본적이 material 디자인의 색상(파랑)이 적용된다.
ListTile(
onTap: () async {
final booking = await showDateRangePicker(
context: context,
firstDate: DateTime.now(),
lastDate: DateTime(2025),
builder: (context, child) {
return Theme(
data: ThemeData(),
child: child!,
);
},
);
print(booking);
다른 색상을 적용하고 싶으면 이렇게 바꾸면 된다.
showDateRangePicker 외에도 showDatePicker나 showTimePicker에서도 builder 값을 이용해서 색상 등을 변경 할 수 있다.
ListTile(
onTap: () async {
final booking = await showDateRangePicker(
context: context,
firstDate: DateTime.now(),
lastDate: DateTime(2025),
builder: (context, child) {
return Theme(
data: ThemeData(
appBarTheme: const AppBarTheme(
foregroundColor: Colors.white,
backgroundColor: Colors.amber,
),
),
child: child!,
);
},
);
print(booking);