В рамках 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;
});
},
);





Попробуйте ниже код
Значение по умолчанию
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!);
},
),
Результат:
Перед отбором
После выбора
спасибо после добавления я внезапно получаю следующую ошибку, есть идеи, почему? КРИТИЧЕСКИЙ **: 16:26:03.375: void update_pressing_state(FlKeyEmbedderResponder *, uint64_t, uint64_t): утверждение 'lookup_hash_table(self->pressing_records,physical_key)!= 0' не выполнено
Можете ли вы добавить полный фрагмент кода для лучшего понимания или, прежде чем пытаться очистить и опубликовать проект, получить его?
не уверен, что произошло, я просто клонировал git в другом каталоге, и все заработало.
но один вопрос. Когда у меня есть значение по умолчанию для раскрывающегося списка, в это время тип нагрузки отстает от значения по умолчанию. только при выборе раскрывающегося списка «Тип нагрузки» перемещается в верхний правый угол.
@kumar Да, я согласен, причина в том, что когда раскрывающийся список активен, только labelText измените его положение. Flutter обрабатывает переход между меткой, отображаемой в качестве заполнителя, и отображением над раскрывающимся списком, когда он активен. Обычно это контролируется свойством floatLabelBehavior виджета InputDecoration.
Я попробовал ваше предложение floatLabelBehavior: FloatingLabelBehavior.always, но без изменений.
@kumar Я обновил свой ответ, используя значение по умолчанию, пожалуйста, проверьте, я не использую никакого поведения
Вам нужен результат первого изображения?