请帮助我解决Flutter应用程序中的错误:
class MyApp extends StatelessWidget {
Future<bool> _onBackPressed(BuildContext context) {
return showDialog(
context:context,builder:(BuildContext context)=>AlertDialog(title: Text('Exit'),
actions: <Widget>[
FlatButton( child:Text('NO'),onPressed: ()=>Navigator.pop(context,false)),
FlatButton( child:Text('Yes'),onPressed: ()=>Navigator.pop(context,true))
],));
}
@override
Widget build(BuildContext context) {
return WillPopScope(onWillPop:_onBackPressed, // **the argument type Future<bool>Function(BuildContext) can not be assigned to parameter Future<bool>Function()**
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'ListViews',
theme: ThemeData(
primarySwatch: Colors.teal,
),
home: Scaffold(
appBar: AppBar(title: Text('ListViews')),
body: BodyLayout(),
),
));
}
}
Future<bool>_onBackPressed(BuildContext context) async{
后,此错误将显示在错误框中错误:
the argument type Future<bool>Function(BuildContext) can not be assigned to parameter Future<bool>Function()
如果您有更好的方法添加 ON DOUBLE PRESS EXIT FLUTTER APP
,请提及答案 0 :(得分:1)
好吧,onWillPop
参数需要一个Future<bool> Function()
,但是您提供了一个需要将BuildContext
作为参数的函数(因此,类型为Future<bool> Function(BuildContext context)
)。 / p>
正确的方法是将函数包装到另一个函数中
WillPopScope(
onWillPop: () => _onBackPressed(context),
child: ...
)
而且我认为没有比检测上次上次按下的时间戳并将其与当前按下时的当前时间进行比较的更为优雅的方法来检测两次按下。