按下后退按钮时,应用程序会颤抖地关闭?

问题描述 投票:0回答:4

如标题所示,按后退按钮后,应用程序将关闭。

Container(
      margin: EdgeInsets.only(left: 20, top: 8),
      decoration: BoxDecoration(
          color: colorYellow,
          borderRadius: BorderRadius.all(Radius.circular(20))),
      height: 40,
      width: 40,
      child: IconButton(
        icon: Icon(Icons.arrow_back, color: Colors.white, size: 20),
        onPressed: () => Navigator.of(context).pop(),
      ),
    ),
flutter flutter-layout
4个回答
2
投票

使用

Navigator.pop(context);
代替
Navigator.of(context).pop()


2
投票

WillPopScope 包裹你的脚手架。每当按下后退按钮时,您都会在 onWillPop 处收到回调,该回调返回一个 Future。如果 Future 返回 true,则弹出屏幕。

 @override
 Widget build(BuildContext context) {
    return WillPopScope(
    onWillPop: () async {
        // await showDialog or Show add banners or whatever
        // return true if the route to be popped
         return false; // return false if you want to disable device back button click
       },
      child: Scaffold(),
     ),
  };

return false;
这意味着您的应用程序不会在单击后退按钮时关闭


0
投票
  Future<bool> onBackPress(context) {
        return showDialog(
            context: context,
            builder: (context) => AlertDialog(
                  title: Text('Do you wish to exit?'),
                  actions: <Widget>[
                    TextButton(
                      child: Text('Cancel'),
                      onPressed: () => {Navigator.pop(context, false)},
                    ),
                    TextButton(
                        onPressed: () => {Navigator.pop(context, true)},
                        child: Text('Exit'))
                  ],
                ));
      }
    
    @override
      Widget build(BuildContext context) {
        return WillPopScope(
          onWillPop: () => onBackPress(context),
          child: SafeArea(),
     )};

0
投票

我也遇到了同样的问题。当实现flutter_stripe时。将

**FlutterFragmentActivity**
更改为
**FlutterActivity**
解决了该问题。不知道原因


© www.soinside.com 2019 - 2024. All rights reserved.