Flutter 在Null之前调用了getter SearchableText

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

我正在构建一个自动搜索,当用户键入数据时,会从widget类
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