Flutter - 当用户使用 phone 的内置后退按钮时如何处理应用程序中的命令

Flutter - how to handle commands in an application when a user makes use of the phone's built-in back button

我一直在构建一个在应用栏中有后退箭头“<-”和叉号 'X' 的应用。以编程方式,我包含了各种命令,包括 Navigator.pop(context) 和清除使用 GetX 数据控制器存储的全局数据,如下所示:

        onPressed: () {
          try {
            /// Clear data, so the app is ready to use again
            c.updateValue('');

            /// Close Screen
            Navigator.pop(context);
          } catch (e) {
            print(
                'Error when closing the database input window.');
          }
        },

在这种情况下,清除值意味着简单地用空字符串替换存储的任何字符串。

现在,当按下应用栏中的后退箭头或十字时,这将完美运行。但是,我注意到在物理设备上,当我使用应用程序外部的 phone 的背面 arrow/button 时,它在移动屏幕时不会清除任何内容数据,根据上面我的 onPressed 函数中的第一条语句。

我的问题是,与应用程序的编程后退按钮相比,当用户使用 phone 的后退按钮时,我如何获得相同的命令?

谢谢!

WillPopScope 包装你的 Scaffold 并在 onWillPop 上执行相同的命令,如下所示:

return WillPopScope(
   onWillPop: () async{
      try {
        /// Clear data, so the app is ready to use again
        c.updateValue('');
        return true; // true allows navigating back
      } catch (e) {
        print(
            'Error when closing the database input window.');
        return false; // false prevents navigating back
      }
    
    },
   child: Scaffold(....),
  );