Во флаттере, как установить местоположение метки для DropdownMenu

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

Как сделать так, чтобы метка раскрывающегося списка поднималась вверх.

Данные темы

  theme: ThemeData(
    colorSchemeSeed: Colors.blueGrey,
    useMaterial3: true,
    appBarTheme: AppBarTheme(backgroundColor: Colors.blueGrey,),
    scaffoldBackgroundColor: const Color.fromARGB(255, 134, 173, 192),
    inputDecorationTheme: InputDecorationTheme(
     filled: true,
     fillColor: Colors.white,
    ),
   )

loadTypeDropdownMenu = DropdownMenu<String>(
  inputDecorationTheme: const InputDecorationTheme(
    fillColor: Colors.amber,
    filled: true,
    floatingLabelAlignment: FloatingLabelAlignment.center,
    floatingLabelBehavior: FloatingLabelBehavior.always,
    floatingLabelStyle: TextStyle( 
    color: Colors.red, 
    fontWeight: FontWeight.bold,         
    )
  ),
  initialSelection: defalutLoadType,
  label: const Text('Load Type'),
  dropdownMenuEntries: loadTypesEntries,
  onSelected: (String? loadType) {
    setState(() {
      selectedLoadType = loadType;
    });
  },
);

Вам нужен результат первого изображения?

Ravindra S. Patil 22.04.2024 08:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте ниже код

Значение по умолчанию

var selected = 'Load';

Выпадающий виджет:

DropdownButtonFormField<String>(
      decoration: InputDecoration(
        border: OutlineInputBorder(borderRadius: BorderRadius.circular(10)),
        focusedBorder: OutlineInputBorder(
          borderRadius: BorderRadius.circular(10),
          borderSide: BorderSide(color: Colors.grey),
        ),
        labelText: 'Load Type',
        labelStyle: TextStyle(color: Colors.grey),
      ),
      value: selected,
      items: ["Load", "Pressure", "Work", "Pending", "Completed"]
          .map(
            (label) => DropdownMenuItem(
              child: Text(label),
              value: label,
            ),
          )
          .toList(),
      onChanged: (value) {
        setState(() => selected = value!);
      },
    ),

Результат:

  1. Перед отбором

  2. После выбора

спасибо после добавления я внезапно получаю следующую ошибку, есть идеи, почему? КРИТИЧЕСКИЙ **: 16:26:03.375: void update_pressing_state(FlKeyEmbedderResponder *, uint64_t, uint64_t): утверждение 'lookup_hash_table(self->pressing_records,physical_key)!= 0' не выполнено

kumar 22.04.2024 13:03

Можете ли вы добавить полный фрагмент кода для лучшего понимания или, прежде чем пытаться очистить и опубликовать проект, получить его?

Ravindra S. Patil 22.04.2024 13:07

не уверен, что произошло, я просто клонировал git в другом каталоге, и все заработало.

kumar 22.04.2024 14:58

но один вопрос. Когда у меня есть значение по умолчанию для раскрывающегося списка, в это время тип нагрузки отстает от значения по умолчанию. только при выборе раскрывающегося списка «Тип нагрузки» перемещается в верхний правый угол.

kumar 22.04.2024 15:00

@kumar Да, я согласен, причина в том, что когда раскрывающийся список активен, только labelText измените его положение. Flutter обрабатывает переход между меткой, отображаемой в качестве заполнителя, и отображением над раскрывающимся списком, когда он активен. Обычно это контролируется свойством floatLabelBehavior виджета InputDecoration.

Ravindra S. Patil 22.04.2024 15:11

Я попробовал ваше предложение floatLabelBehavior: FloatingLabelBehavior.always, но без изменений.

kumar 23.04.2024 02:35

@kumar Я обновил свой ответ, используя значение по умолчанию, пожалуйста, проверьте, я не использую никакого поведения

Ravindra S. Patil 23.04.2024 07:04

Другие вопросы по теме

Похожие вопросы