Dart 颤振搜索栏插件关闭侦听器

Dart 颤振搜索栏插件关闭侦听器,dart,flutter,Dart,Flutter,我目前正在使用带有标签页的Flitter\u search\u工具栏插件。因为我的价值观是动态变化的。我想知道是否有任何方法可以将侦听器添加到包中以进行必要的更改 插件在这里: 更新:这就是我的代码现在的样子 _NavigationState() { searchBar = new SearchBar( controller: controller, inBar: false, setState: setState, onSubmit

我目前正在使用带有标签页的Flitter\u search\u工具栏插件。因为我的价值观是动态变化的。我想知道是否有任何方法可以将侦听器添加到包中以进行必要的更改

插件在这里:

更新:这就是我的代码现在的样子

  _NavigationState() {
    searchBar = new SearchBar(
      controller: controller,
      inBar: false,
      setState: setState,
      onSubmitted: onSubmit,
      onChanged: onChange,
      buildDefaultAppBar: buildAppBar,
      hintText: 'Search Book',
      closeOnSubmit: false,
      clearOnSubmit: true,
      onClosed: onClosed,
    );
  }

  void onClosed() {
    isSeaching = false;
    loadTabpages();
    setState(() {});
  }

您可以进行回购并进行更改:

在SearchBar类中添加此变量:

     /// Event triggered when the user close the search bar
      final VoidCallback onClosed;
将字段添加到构造函数中

      SearchBar(
          {@required this.setState,
          @required this.buildDefaultAppBar,
          this.onSubmitted,
          this.controller,
          this.hintText = 'Search',
          this.inBar = true,
          this.colorBackButton = true,
          this.closeOnSubmit = true,
          this.clearOnSubmit = true,
          this.showClearButton = true,
          this.onChanged,
          this.onClosed})        
第144行

将小部件设置为前导属性

         new IconButton(
                  icon: const BackButtonIcon(),
                  color: buttonColor,
                  tooltip: MaterialLocalizations.of(context).backButtonTooltip,
                  onPressed: () {
                    if (onClosed != null) {
                      onClosed();
                    }
                    Navigator.maybePop(context);
                  }),
使用侦听器:

    new SearchBar(
            inBar: true,
            setState: setState,
            showClearButton: false,
            clearOnSubmit: false,
            closeOnSubmit: false,
            onClosed: () {

            }), ...
更新了“后退”按钮的处理方式

    return new AppBar(
          leading: WillPopScope(
            onWillPop: () {
              if (onClosed != null) {
                onClosed();
              }
              return Future.value(true);
            },
            child: new IconButton(
                icon: const BackButtonIcon(),
                color: buttonColor,
                tooltip: MaterialLocalizations.of(context).backButtonTooltip,
                onPressed: () {
                  if (onClosed != null) {
                    onClosed();
                  }
                  controller.clear();
                  Navigator.maybePop(context);
                }),
          ),

          ....

你能成功地测试这些更改吗?我的onClose方法似乎从来没有被击中,当我运行它时,你是否将searchbar类复制到你的项目中并修改了它?你能用你的代码更新你的问题吗?它是有效的,但是编辑onWillPop应该返回Future.value(true)。我可以帮你编辑。非常感谢您的帮助,干得好@diegoveloper。您可以将PR提升到
flatter搜索栏
,以供许多人使用。