WillPopScope 不适用于其他小部件

Posted

技术标签:

【中文标题】WillPopScope 不适用于其他小部件【英文标题】:WillPopScope does not work from another widget 【发布时间】:2021-10-03 16:52:04 【问题描述】:

我的 Flutter 应用中有多个小部件。如果我单击另一个小部件,Widget build(BuildContext context) 顶部定义的 onWillPopScope 方法将不起作用。你能给我建议如何解决它吗?谢谢

见以下代码:

 ExpansionTile(
                                  initiallyExpanded: false,
                                  title:
                                  Text('Solution', style: basicAlertBlack),
                                  children: <Widget>[
                                    Container(
                                      color: Colors.amber.shade50,
                                      height:
                                      MediaQuery
                                          .of(context)
                                          .size
                                          .height /
                                          7,
                                      child: _solutionTextField(),
                                    )
                                  ],
                                ),

第二个小部件的代码:

 Widget _solutionTextField() 
 return TextField(

    focusNode: myFocusNode,
    keyboardType: TextInputType.multiline,
    maxLines: null,
    style: solution,
    controller: solutionController,
    decoration: new InputDecoration(
        contentPadding: EdgeInsets.all(8),
        focusedBorder: InputBorder.none,
        enabledBorder: InputBorder.none,
        errorBorder: InputBorder.none,
        disabledBorder: InputBorder.none,
        hintText: 'Enter a solution'));

【问题讨论】:

【参考方案1】:

请您提供更多背景信息吗?

正如documentations 所说:

WillPopScope 类

注册回调以否决用户尝试关闭封闭的 ModalRoute。

这意味着它将在pop 操作上被调用。可以通过单击返回箭头从 android 导航中调用它,或者通过从边缘左侧向右滑动来调用 ios。以及您通过Navigator 调用的所有其他pop 方法。所以它与点击 Widget 没有关系。

【讨论】:

以上是关于WillPopScope 不适用于其他小部件的主要内容,如果未能解决你的问题,请参考以下文章

Flutter RTL(本地化)不适用于网格视图小部件 - 阿拉伯语言

使用后退按钮颤振测试 WillPopScope

必须向 Text 小部件提供非空字符串。错误显示,但 null-safety 不适用于代码

PDF 输出不适用于 Pyqt5 和 Python 3.5

Visual Studio 格式不适用于 Control + K+D 和多行

小部件上的 dojo 查询