【问题标题】:Navigator.pop(context) show black screen while finish the last Activity in stack in FlutterNavigator.pop(context) 在 Flutter 中完成堆栈中的最后一个 Activity 时显示黑屏
【发布时间】:2019-07-15 10:33:09
【问题描述】:

我对此进行了很多搜索,但还没有找到正确的解决方案。我想知道 Flutter 相当于 finish() (in java for Android)

 @override
 Widget build(BuildContext context) {
 return WillPopScope(
  onWillPop: ()  {
    if (counter == 1) {
    // **What should I write here so that my current activity is destroyed with showing the Toast message.**
    }
    Fluttertoast.showToast(
      msg: "Press again for exit!",
      toastLength: Toast.LENGTH_SHORT,
      gravity: ToastGravity.BOTTOM,
    );
    counter++;
    Timer(Duration(seconds: 2), () {
      counter = 0;
    });
    print(counter);
  },
 child: new Scaffold(
      ....................
           );
   );
}

【问题讨论】:

  • “完成”是什么意思?您指的是另一种编程语言中的方法,例如 java for android 中的“onDestroy”?
  • @F-1 是的,我指的是java for android中的方法。但是在 dart 中我没有找到这种类型的方法。
  • 好的,这里有一些信息api.flutter.dev/flutter/widgets/State/dispose.html 听起来你只需要在计数器达到 1 时弹出视图,这将导致调用 dispose 方法。您没有解释的一件事是在处置发生后将用户发送到哪里。由于与前一个视图关联的代码存在问题,它可能是黑屏。请发布完整的错误日志。一旦你解释了更多,我会删除或编辑我的答案。
  • 感谢@F-1,但我找到了另一种方法。请检查我的答案。
  • 酷。您应该将其标记为答案。

标签: flutter dart navigator onbackpressed


【解决方案1】:

我已经找到了解决方案。绝对有效!

@override
Widget build(BuildContext context) {
return new WillPopScope(
    onWillPop: () {
      if (counter == 1) {
        return Future.value(true);
      }
      Fluttertoast.showToast(
        msg: "Press again for exit!",
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.BOTTOM,
      );
      counter++;
      Timer(Duration(seconds: 2), () {
        counter = 0;
      });
      return Future.value(false);
    },
    child: new Scaffold(
      ..................

    ));
 }

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2021-07-28
    • 2022-01-25
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多