当“项目”上有超过 1 个元素时,以下代码会出错。
当我按下 dropDownField 时发生错误。
FormBuilderDropdown(
name: 'fieldName',
items: items.map<DropdownMenuItem>(
(item) {
return DropdownMenuItem(
child: Text(item.name),
value: item.toJson(),
);
},
).toList(),
initialValue: items.first.toJson(),
);
发生错误时:
- 当 initialValue 设置为 null 或根本未设置 initialValue 字段时。
- 当 initialValue 设置为“项目”的“第一个”元素的值时。
当不发生错误时:
- 当“项目”对象中只有 1 个项目时。
- 当 initialValue 设置为“项目”的“最后一个”元素的值时。
初始值:items.last.toJson(),
错误日志:
构建 _DropdownRoutePage(dirty): 'package:flutter/src/material/dropdown.dart': 失败的断言: line 580 pos 12: 'menuHeight == menuBottom - menuTop': 不正确。
使用的颤振库:
flutter_form_builder 7.0.0
使用 DropdownButtonFormField 时错误仍然存在。
实际代码截图
Builder(builder: (context) {
final agroActivityState =
context.watch<AgroActivityCubit>().state;
late final initialValue;
late List<DropdownMenuItem> agroActiviyItems;
if (agroActivityState is AgroActivityReadSuccess) {
initialValue = agroActivityState.agroActivities.first.toJson();
print('got item');
agroActiviyItems =
agroActivityState.agroActivities.map<DropdownMenuItem>(
(agroActivity) {
print(agroActivity.toJson());
return DropdownMenuItem(
child: Text(agroActivity.name),
value: agroActivity.toJson(),
);
},
).toList();
print(agroActivityState.agroActivities.first.toJson());
print(agroActivityState.agroActivities.last.toJson());
return FormBuilderDropdown(
name: 'agroActivityName',
decoration: const InputDecoration(
labelText: 'Agro Activity Type',
),
hint: const Text('Select Agro Activity'),
validator: FormBuilderValidators.compose(
[FormBuilderValidators.required(context)]),
items: agroActivityState.agroActivities.map<DropdownMenuItem>(
(agroActivity) {
return DropdownMenuItem(
child: Text(agroActivity.name),
value: agroActivity.toJson(),
);
},
).toList(),
initialValue: agroActivityState.agroActivities.first.toJson(),
);
} else {
return const CircularProgressIndicator();
}