我是飞镖和飞镖的新手,试图学习如何使用WillPopScope控制后退按钮。
我的课看起来像这样:
class PlayPage extends StatelessWidget {
Future<bool> _onBackPressed() {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Do you really want to leave?'),
actions: <Widget>[
FlatButton(
child: Text('No'),
onPressed: () => Navigator.pop(context,false),
),
FlatButton(
child: Text('Yes'),
onPressed: () => Navigator.pop(context),
),
],
)
);
}
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _onBackPressed,
child: Scaffold(
appBar: AppBar (
title: Text('Play')
),
body: Container(
color: Colors.white,
)
)
);
}
}
我的问题: 如果我在自定义函数_onBackPressed中获取代码并将其作为匿名函数分配给onWillPop,则它可以正常工作。但是,如果我尝试通过onWillPop调用自定义函数,则VSCode会在showDialog构造函数中突出显示我的上下文参数,因为它无法识别传入的内容并且无法解析它。而且我似乎无法弄清楚如何从onWillPop调用中传递它。
答案 0 :(得分:0)
这是一个非常简单的开发人员解决方案,但我只是没有想到。这是一个解决方案。
在onWillPop中,只需使用匿名函数来调用我的自定义类方法,然后从那里传递上下文即可。
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
return _onBackPressed(context);
},
child: Scaffold(
appBar: AppBar (
title: Text('Play')
),
body: Container(
color: Colors.white,
)
)
);
}
}