在我的应用程序中,当我单击设备的后退按钮时,它正在关闭应用程序。我使用了Willpopscope,但无法正常工作。但是,当我创建一个示例项目时,它正在工作。谁能解释一下为什么它在现有应用程序中不起作用。我分享了我的代码。
Future<bool> _onWillPop() {
return showDialog(
context: context,
builder: (context) => new AlertDialog(
title: new Text('Are you sure?'),
content: new Text('Unsaved data will be lost.'),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.of(context).pop(false),
child: new Text('No'),
),
new FlatButton(
onPressed: () => Navigator.of(context).pop(true),
child: new Text('Yes'),
),
],
),
) ??
false;
}
@override
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: _onWillPop,
child: new Scaffold(
appBar: new AppBar(
title: new Text(
"On Back pressed",
style: new TextStyle(color: Colors.white),
),
),
body: new Center(
child: new Text("Home Page"),
),
),
);
}
答案 0 :(得分:0)
将此_onWillPop
替换为_onWillPop()async{ return false; }
答案 1 :(得分:0)
WillPopScope#onWillPop如果返回false
,则不允许弹出。如果您不想显示AlertDialog
,则可以尝试类似的操作。
@override
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: () => Future.value(false),
child: new Scaffold(
appBar: new AppBar(
title: new Text(
"On Back pressed",
style: new TextStyle(color: Colors.white),
),
),
body: new Center(
child: new Text("Home Page"),
),
),
);
}