Flutter 在Null之前调用了getter SearchableText
我正在构建一个自动搜索,当用户键入数据时,会从widget类Flutter 在Null之前调用了getter SearchableText,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我正在构建一个自动搜索,当用户键入数据时,会从widget类TopSearchWidget填充数据,该类有一个动画容器,但我不断得到错误getter'searchableText'被调用为null。 主课 class SearchScreen extends StatefulWidget { SearchScreen({ this.controller, Key key, }) : super(key: key); class _SearchScreenState e
TopSearchWidget
填充数据,该类有一个动画容器,但我不断得到错误getter'searchableText'被调用为null。
主课
class SearchScreen extends StatefulWidget {
SearchScreen({
this.controller,
Key key,
}) : super(key: key);
class _SearchScreenState extends State<SearchScreen> {
TextEditingController dropOffTextEditingController = TextEditingController();
PickerMapController controller = PickerMapController(initMapWithUserPosition: true);
@override
void initState() {
// TODO: implement initState
super.initState();
dropOffTextEditingController.addListener(textOnChanged);
}
void textOnChanged() {
controller.setSearchableText(dropOffTextEditingController.text);
}
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: Stack(
children: [
Container(
child: Padding(
padding: EdgeInsets.only(left: 25.0, top: 30.0, right: 25.0, bottom: 20.0),
child: Column(
children: [
SizedBox(height: 10.0),
Row(
children: [
SizedBox(width: 18.0),
Expanded(
child: Padding(
padding: EdgeInsets.all(3.0),
child: TextField(
controller: dropOffTextEditingController,
onTap: () {
dropOffTextEditingController.clear();
controller.setSearchableText("");
FocusScope.of(context).requestFocus(new FocusNode());
//TopSearchWidget();
},
),
),
),
],
),
],
),
),
),
SizedBox(height: 10.0),
Positioned(
top: 0,
left: 0,
right: 0,
child: TopSearchWidget(),
)
],
),
);
}
}
我想。dropOffTextEditingController的值为空或为空。尝试使用空安全设置,即dropOffTextEditingController.text???,并查看它是否有帮助。是的,您是正确的。这发生在我第一次启动程序时。我应该在哪里添加这个?错误不是指向有问题的行吗?它也可能来自
SearchScreen.of(上下文)代码>在initState函数中。。。你能打印(controller==null)
吗?我没有得到任何东西,但是我按照你告诉我的做了,并且更新了帖子中的错误。@在textOnChange()方法中,用dropOffTextEditingController.text代替dropOffTextEditingController.text,插入dropOffTextEditingController.text。
class TopSearchWidget extends StatefulWidget {
@override
State<StatefulWidget> createState() => _TopSearchWidgetState();
}
class _TopSearchWidgetState extends State<TopSearchWidget> {
PickerMapController controller;
@override
void initState() {
super.initState();
controller = SearchScreen.of(context);
controller.searchableText.addListener(onSearchableTextChanged);
}
void onSearchableTextChanged() async {
//do something
}
}
The getter 'searchableText' was called on null.
Receiver: null
Tried calling: searchableText