Flutter 我想退出后退按钮应用程序,使用willpopscope代码和我的代码

Flutter 我想退出后退按钮应用程序,使用willpopscope代码和我的代码,flutter,Flutter,我想退出后退按钮应用程序,使用willpopscope代码和我的代码。 你不能这样写代码吗 使用另一个后退按钮时,出现应用程序退出代码xxxx:xxxx错误 下面的代码也给出了一个错误 我在想办法 请指教 class HomeScreen extends StatelessWidget { DateTime currentBackPressTime; final scaffoldKey = GlobalKey<ScaffoldState>(); final Fir

我想退出后退按钮应用程序,使用willpopscope代码和我的代码。 你不能这样写代码吗

使用另一个后退按钮时,出现应用程序退出代码xxxx:xxxx错误

下面的代码也给出了一个错误

我在想办法

请指教

  class HomeScreen extends StatelessWidget {
  DateTime currentBackPressTime;

  final scaffoldKey = GlobalKey<ScaffoldState>();

  final FirebaseUser user;
  HomeScreen({this.user});

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async{
        bool result = onPressBackButton();
        return await Future.value(result);
        },
      child: MaterialApp(
              title: 'Custom Navigation Drawer Demo',
              theme: ThemeData(
                primarySwatch: Colors.blue,
              ),
              debugShowCheckedModeBanner: false,
              home: MyHomePage(
              ),
      ),
    );
  }

  bool onPressBackButton() {
    DateTime now = DateTime.now();
    if (currentBackPressTime == null ||
        now.difference(currentBackPressTime) > Duration(seconds: 2)) {
      currentBackPressTime = now;
      scaffoldKey.currentState
        ..hideCurrentSnackBar()
        ..showSnackBar(SnackBar(
          content: Text("Tap back again to leave."),
        ));
      return false;
    }
    return true;
  }

}
类主屏幕扩展小部件{
DateTime currentBackPressTime;
最终脚手架键=GlobalKey();
最终FirebaseUser用户;
主屏幕({this.user});
@凌驾
小部件构建(构建上下文){
返回式示波器(
onWillPop:()异步{
bool result=onPressBackButton();
返回等待未来。值(结果);
},
孩子:MaterialApp(
标题:“自定义导航抽屉演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
debugShowCheckedModeBanner:false,
主页:我的主页(
),
),
);
}
bool onpress backbutton(){
DateTime now=DateTime.now();
如果(currentBackPressTime==null||
现在.差异(currentBackPressTime)>持续时间(秒:2)){
currentBackPressTime=现在;
scaffoldKey.currentState
…hideCurrentSnackBar()
…显示SnackBar(SnackBar(
内容:文本(“再次点击返回以离开”),
));
返回false;
}
返回true;
}
}

您的Willposcope小部件放错了位置

您必须将其放置在MaterialApp小部件中,该小部件有一个导航器使其工作

Widget build(BuildContext context) {
return MaterialApp(
  title: 'Custom Navigation Drawer Demo',
  theme: ThemeData(
    primarySwatch: Colors.blue,
  ),
  debugShowCheckedModeBanner: false,
  home: WillPopScope(
    onWillPop: () async {
      bool result = onPressBackButton();
      return await Future.value(result);
    },
    child: MyHomePage(),
  ),
);
}