如何在Flutter for Android中处理设备后退按钮的onPressed()
?我知道我必须为iOS手动设置一个“后退”按钮,但是Android设备具有内置的“后退”按钮,用户可以按下它。如何处理?
答案 0 :(得分:3)
您可以使用WillPopScope
来实现。
首先将Scaffold
包裹在WillPopScope
内。我在第一页显示一个对话框,要求确认退出该应用程序。您可以根据需要进行修改。
示例:
@override
Widget build(BuildContext context) {
return new WillPopScope(
child: Scaffold(
backgroundColor: Color.fromRGBO(255, 255, 255, 20.0),
resizeToAvoidBottomPadding: true,
appBar: AppBar(
elevation: 4.0,
title:
Text('Dashbaord', style: Theme.of(context).textTheme.title),
leading: new IconButton(
icon: new Icon(Icons.arrow_back, color: Colors.white),
onPressed: () => _onWillPop(),
)),
body: new Container(), // your body content
onWillPop: _onWillPop,
);
}
// this is the future function called to show dialog for confirm exit.
Future<bool> _onWillPop() {
return showDialog(
context: context,
builder: (context) => new AlertDialog(
title: new Text('Confirm Exit?',
style: new TextStyle(color: Colors.black, fontSize: 20.0)),
content: new Text(
'Are you sure you want to exit the app? Tap \'Yes\' to exit \'No\' to cancel.'),
actions: <Widget>[
new FlatButton(
onPressed: () {
// this line exits the app.
SystemChannels.platform
.invokeMethod('SystemNavigator.pop');
},
child:
new Text('Yes', style: new TextStyle(fontSize: 18.0)),
),
new FlatButton(
onPressed: () => Navigator.pop(context), // this line dismisses the dialog
child: new Text('No', style: new TextStyle(fontSize: 18.0)),
)
],
),
) ??
false;
}
}
在上面的示例中,当用户点击_onWillPop()
中的BACK
按钮和后退按钮时,我将调用此AppBar
函数。
您可以使用此WillPopScope
来按下BACK
按钮并执行所需的操作。