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