我已经设置了AutoCompleteTextField,但是当我也通过发送和接收相同的输入值从一页导航到另一页时,该值不会显示在AutoCompleteTextField中。而且,当我点击建议时,我遇到了错误
getter'controller'在null上被调用。接收方:空尝试调用:控制器
代码:
class CustomRegistration extends StatefulWidget {
final String pincodeC;
CustomRegistration([this.pincodeC])
@override
_CustomRegistrationState createState() => _CustomRegistrationState();
}
class _CustomRegistrationState extends State<CustomRegistration> {
FocusNode pincodeFocus = new FocusNode();
TextEditingController pincode = new TextEditingController();
List<String> suggestionList = ['170010','110011','170001'];
SimpleAutoCompleteTextField textField;
@override
Widget build(BuildContext context) {
Column body = new Column(children: [
new ListTile(
title: textField,)
]);
body.children.addAll(added.map((item) {
return new ListTile(title: new Text(item));
}));
print(textField);
return Scaffold(
body: Builder(
builder: (context) => SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AutoCompleteTextField(
focusNode: pincodeFocus,
decoration: InputDecoration(
border: InputBorder.none,
prefixIcon: Icon(Icons.home),
hintText: "Pincode",
),
controller: pincode,
itemSubmitted: (item) {
setState(() {
textField.controller.text = item.toString();
print('item submitted' + item.toString());
});
},
key: key,
suggestions: suggestionList,
itemBuilder: (context, item){
return Container(
padding: EdgeInsets.all(20.0),
child: Row(
children: <Widget>[
Text(
item,
style: TextStyle(color: Colors.black),
)
],
),
);
},
itemSorter: (a, b) {
return a.compareTo(b);
},
itemFilter: (item, query) {
return item
.toLowerCase()
.toString()
.startsWith(query.toLowerCase());
},
),
]))));}}
在打印文本字段时,我得到 null 以及在何处初始化 widget.pincodeC ?
答案 0 :(得分:0)
谢谢大家的帮助,我的确通过在内部版本中添加pincode.text = widget.pincodeC;
来获得结果