0

当“项目”上有超过 1 个元素时,以下代码会出错。

当我按下 dropDownField 时发生错误。

FormBuilderDropdown(
                  name: 'fieldName',
                  items: items.map<DropdownMenuItem>(
                    (item) {
                      return DropdownMenuItem(
                        child: Text(item.name),
                        value: item.toJson(),
                      );
                    },
                  ).toList(),
                  initialValue: items.first.toJson(),
                );

发生错误时:

  1. 当 initialValue 设置为 null 或根本未设置 initialValue 字段时。
  2. 当 initialValue 设置为“项目”的“第一个”元素的值时。

当不发生错误时:

  1. 当“项目”对象中只有 1 个项目时。
  2. 当 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();
              }
4

0 回答 0