Как настроить виджет TimePicker во Flutter

#flutter #material-design #timepicker

#flutter #материал-дизайн #timepicker

Вопрос:

введите описание изображения здесь

Как вы можете изменить фиолетовый цвет выделения, фиолетовый цвет границы, цвет текста времени и Hour и Minute цвет виджета выбора времени ввода, похоже, не удается найти свойства в TimePickerThemeData

Комментарии:

1. Если мой ответ помог вам решить проблему, указанную в вашем исходном сообщении, пожалуйста, примите его. Если нет, предоставьте более подробную информацию о том, почему это не так.

Ответ №1:

 showTimePicker(
                  context: context,
                  initialTime: TimeOfDay(hour: 10, minute: 47),
                  builder: (context, child) {
                    return Theme(
                      data: ThemeData.light().copyWith(
                        colorScheme: ColorScheme.light(
                          // change the border color
                          primary: Colors.red,
                          // change the text color
                          onSurface: Colors.purple,
                        ),
                        // button colors 
                        buttonTheme: ButtonThemeData(
                          colorScheme: ColorScheme.light(
                            primary: Colors.green,
                          ),
                        ),
                      ),
                      child: child,
                    );
                  },
                );
  

Результат:

введите описание изображения здесь

Комментарии:

1. Спасибо! Есть ли способ также напрямую изменить Hour и Minute цвет текста и цвет выбора дневного периода?

2. Некоторые из них Themes colors работают параллельно, поэтому практически невозможно напрямую изменить одно, не затронув другое.

3. Вы случайно не знаете, как получить старый showTimePicker виджет без понижения рейтинга Flutter?

4. Я не думаю, что это было бы возможно без опции понижения рейтинга, можете ли вы опубликовать скриншот того, какой цветовой комбинации вы пытаетесь добиться?

5. Нет проблем, просто любопытно, вашего ответа было достаточно, еще раз спасибо

Ответ №2:

Вы также можете использовать состояния в своей теме! Управление стилями при выполнении некоторых действий (например, выбранных или сфокусированных действий).

Вот пример:

 final theme = ThemeData.light().copyWith(
  timePickerTheme: TimePickerThemeData(
    backgroundColor: Colors.green.shade200,
    hourMinuteColor: MaterialStateColor.resolveWith((states) =>
        states.contains(MaterialState.selected)
            ? Colors.blue.withOpacity(0.2)
            : Colors.orange),
    hourMinuteTextColor: MaterialStateColor.resolveWith((states) =>
        states.contains(MaterialState.selected)
            ? Colors.pink
            : Colors.deepPurple),
    dialHandColor: Colors.pink.shade800,
    dialBackgroundColor: Colors.purple.withOpacity(0.5),
    dialTextColor: MaterialStateColor.resolveWith((states) =>
        states.contains(MaterialState.selected)
            ? Colors.green
            : Colors.black),
    entryModeIconColor: Colors.yellow
    ),
    textTheme: TextTheme(
      overline: TextStyle(
        color: Colors.red,
      ),
    ),
    textButtonTheme: TextButtonThemeData(
        style: ButtonStyle(
      backgroundColor: MaterialStateColor.resolveWith((states) => Colors.black),
      foregroundColor: MaterialStateColor.resolveWith((states) => Colors.green),
      overlayColor: MaterialStateColor.resolveWith((states) => Colors.pink),
    )));
  

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь