Flutter - 更改 TextField 自动完成位置

Luk*_*vin 7 autocomplete textfield flutter

我正在使用 Flutter 的自动完成功能,但我希望将其显示在 TextField 上方。这可能吗?

这是基本设置:

Autocomplete<String>(
     optionsBuilder: (TextEditingValue textEditingValue) {
         if (textEditingValue.text == '') {
             return const Iterable<String>.empty();
         }

         if (textEditingValue.text.contains('...')) {
               return widget.myBloc.names
                   .where((String option) {
               return option.contains(
                    textEditingValue.text.toLowerCase());
               });
          } else {
             return const Iterable<String>.empty();
          }
      },
      onSelected: (String selection) {
         log('selection -> $selection');
      },
      optionsMaxHeight: 40,
      fieldViewBuilder: (context, controller, focusNode,
                              onEditingComplete) {
           return TextField();
      }
  )
Run Code Online (Sandbox Code Playgroud)

小智 1

我明白了,但你不会喜欢这个答案......

在 Flutter 库中,在 RawAutocomplete 实现的第 367 行,他们对其对齐方式进行了硬编码,以跟踪TextField. 只有在复制其整个实现并执行以下操作后,我才能规避此问题:

  1. 将第 367 行更改为targetAnchor: Alignment.topLeft
  2. 添加参数followerAnchor: Alignment.bottomLeft
  3. OptionViewsBuilder您决定实施它的任何地方,如材料自动完成实施中所示,更改为alignment: Alignment.bottomLeft