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(....),
);
我一直在构建一个在应用栏中有后退箭头“<-”和叉号 '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(....),
);