Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 向前摆动_Flutter_Dart_Texteditingcontroller_Flutter Typeahead - Fatal编程技术网

Flutter 向前摆动

Flutter 向前摆动,flutter,dart,texteditingcontroller,flutter-typeahead,Flutter,Dart,Texteditingcontroller,Flutter Typeahead,使用typeahead软件包时,我没有得到期望的结果 当前不受欢迎的行为: 当我点击文本字段时,我会立即看到所有建议的列表(超过26000条),甚至在我开始打字之前 当我开始键入时,建议列表不会进行调整(例如,如果我键入“a”,则会显示完整的建议列表,并且列表不会过滤为仅显示以“a”开头的建议 预期结果: 我只是想让这个功能根据我键入的内容向我显示建议——我肯定我的代码实现错误,非常感谢您的帮助 我的相关代码: import 'package:flutter/material.dar

使用typeahead软件包时,我没有得到期望的结果

当前不受欢迎的行为:

  • 当我点击文本字段时,我会立即看到所有建议的列表(超过26000条),甚至在我开始打字之前

  • 当我开始键入时,建议列表不会进行调整(例如,如果我键入“a”,则会显示完整的建议列表,并且列表不会过滤为仅显示以“a”开头的建议

预期结果:

  • 我只是想让这个功能根据我键入的内容向我显示建议——我肯定我的代码实现错误,非常感谢您的帮助
我的相关代码:

import 'package:flutter/material.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';

import '../providers/analysis_route_provider.dart';

class AutoCompleteTextfieldTwo extends StatefulWidget {
  @override
  _AutoCompleteTextfieldTwoState createState() =>
      _AutoCompleteTextfieldTwoState();
}

class _AutoCompleteTextfieldTwoState extends State<AutoCompleteTextfieldTwo> {
  final TextEditingController _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return TypeAheadField(
      hideOnEmpty: true,
      textFieldConfiguration: TextFieldConfiguration(
        style: TextStyle(
          color: Colors.white,
        ),
        autofocus: false,
        controller: this._controller,
        keyboardType: TextInputType.text,
        enabled: true,
        focusNode: FocusNode(),
        decoration: InputDecoration(
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(20),
            borderSide: BorderSide(
              width: 2,
              color: Colors.blue,
            ),
          ),
          hintText: 'Type in company name or ticker symbol',
          hintStyle: TextStyle(
            color: Colors.grey,
          ),
        ),
      ),
      getImmediateSuggestions: true,
      hideOnError: true,
      suggestionsCallback: (pattern) async {
        return await AnalysisRouteProvider.getCompaniesForTextfield2(pattern);
      },
      itemBuilder: (context, itemData) {
        return ListTile(
          title: Text(itemData['name'].toString()),
          subtitle: Text(itemData['symbol'].toString()),
        );
      },
      onSuggestionSelected: (suggestion) {
        print('selected');

        FocusNode().unfocus();
        this._controller.text = suggestion['name'].toString();
        _controller.clear();
      },
    );
  }
}
JSON片段(API实际返回的对象超过26000个):

我也确信这一点信息是相关的。目前,当我调试并点击typeahead文本字段时,我在调试控制台中得到以下信息:

W/IInputConnectionWrapper(13704): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper(13704): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper(13704): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper(13704): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper(13704): endBatchEdit on inactive InputConnection

我认为您应该将
getimadiatesuggetions
设置为打开
false
以禁用在选项卡上显示建议列表

关于第二个问题,在没有得到建议的情况下,我认为问题在于json, 您使用的是json.decode,它将
[]
中的任何json解码为列表,如果它位于
{}
中,则在map中,因此我认为您应该执行以下操作:

suggestionsCallback: (pattern) async {
        var list = await AnalysisRouteProvider.getCompaniesForTextfield2(pattern);
        return list[0];
      },

我认为您应该将
getimadiatesuggetions
设置为打开
false
以禁用在选项卡上显示建议列表

关于第二个问题,在没有得到建议的情况下,我认为问题在于json, 您使用的是json.decode,它将
[]
中的任何json解码为列表,如果它位于
{}
中,则在map中,因此我认为您应该执行以下操作:

suggestionsCallback: (pattern) async {
        var list = await AnalysisRouteProvider.getCompaniesForTextfield2(pattern);
        return list[0];
      },

谢谢你愿意帮助我!我已经实现了你建议的代码,但它仍然没有给我想要的行为。虽然我最初在文本字段中键入时没有立即得到建议,但我在文本字段中键入时也没有得到任何建议,例如,获得以“a”开头的公司当我输入“a”时感谢你愿意帮助我!我已经实现了你建议的代码,但它仍然没有给我想要的行为。虽然我最初在文本字段上键入时没有立即得到建议,但我在文本字段中键入时也没有得到任何建议——例如,获得以“a”开头的公司当我输入“a”时因此,在
suggestioncallback
method@pskink是的,我需要代码方面的帮助,因此您必须以某种方式使用
查询
——这是您在文本中键入的
字符串
box@pskink举一个例子,看看在代码中会是什么样子?我得到的概念是,t麻烦您在
建议回调中根本没有使用
查询
参数
method@pskink是的,我需要代码方面的帮助,因此您必须以某种方式使用
查询
——这是您在文本中键入的
字符串
box@pskink举一个例子,看看在代码中会是什么样子?我得到的概念,就是困扰我
suggestionsCallback: (pattern) async {
        var list = await AnalysisRouteProvider.getCompaniesForTextfield2(pattern);
        return list[0];
      },