[flutter] 플러터 TimePicker의 버튼 커스터마이징 방법

플러터에서는 showTimePicker() 메서드를 사용하여 TimePicker 다이얼로그를 표시할 수 있습니다. 하지만 기본적으로 제공되는 다이얼로그는 애플리케이션의 디자인과 일치하지 않을 수 있습니다. 따라서 이번 글에서는 플러터 TimePicker의 버튼을 커스터마이징하는 방법에 대해 알아보겠습니다.

1. 패키지 추가

우선, 버튼 커스터마이징을 위해 flutter_custom_dialog 패키지를 추가해야 합니다. 이 패키지는 플러터의 다이얼로그를 커스터마이징할 수 있는 기능을 제공합니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가하세요:

dependencies:
  flutter_custom_dialog: ^1.2.0

다음으로 패키지를 가져오기 위해 main.dart 파일에 다음을 추가하세요:

import 'package:flutter_custom_dialog/flutter_custom_dialog.dart';

2. 버튼 커스터마이징

버튼을 커스터마이징하기 위해 showTimePicker() 대신 showCustomTimePicker() 메서드를 사용합니다. 이 메서드는 builder 매개변수를 통해 커스터마이징된 위젯을 반환해야 합니다. 예를 들어, 다음과 같이 버튼을 커스터마이징할 수 있습니다:

YYDialog yyDialog = YYDialog();
yyDialog.build(context)
  ..title = Text('Select Time')
  ..gravity = Gravity.center
  ..widget(builder: (context) {
    return Column(
    mainAxisSize: MainAxisSize.min,
    children: [
      // TimePicker
      TimePickerSpinner(
        is24HourMode: false,
        normalTextStyle: TextStyle(fontSize: 18),
        highlightedTextStyle: TextStyle(fontSize: 22, color: Colors.blue),
        spacing: 40,
        itemHeight: 35,
      ),

      // Buttons
      SizedBox(height: 10),
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          FlatButton(
            child: Text("Cancel"),
            onPressed: () {
              Navigator.of(context).pop();
            },
          ),
          FlatButton(
            child: Text("OK"),
            onPressed: () {
              // Handle time selection
            },
          ),
        ],
      ),
    ]);
  })
  ..show();

위 코드에서는 TimePickerSpinner 위젯을 사용하여 TimePicker를 생성하고, 커스터마이즈된 버튼을 추가하였습니다. FlatButton 두 개를 추가하여 ‘Cancel’과 ‘OK’ 버튼을 생성하고, 각 버튼에 대한 onPressed 이벤트를 처리할 수 있습니다.

이와 같이 커스터마이즈된 TimePicker를 사용하면 애플리케이션의 디자인에 더욱 일치시킬 수 있습니다.

참고 자료