zoukankan      html  css  js  c++  java
  • flutter捕获应用退出弹出对话框

    使用WillPopScope组件,它会检测到子组件的Navigation的pop事件,并拦截下来。我们需要在它的onWillPop属性中返回一个新的组件(一般是一个Dialog)处理是否真的pop该页面。

    import 'dart:async';
    import 'package:flutter/material.dart';
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
    
        Future<bool> _onBackPressed() {
            return showDialog(
                context: context,
                builder: (context) =>
                    AlertDialog(
                        title: Text('确定退出程序吗?'),
                        actions: <Widget>[
                            FlatButton(
                                child: Text('暂不'),
                                onPressed: () => Navigator.pop(context, false),
                            ),
                            FlatButton(
                                child: Text('确定'),
                                onPressed: () => Navigator.pop(context, true),
                            ),
                        ],
                    ));
        }
    
        @override
        Widget build(BuildContext context) {
            return WillPopScope(
                onWillPop: _onBackPressed,
                child: Scaffold(
                    appBar: AppBar(
                        title: Text('title'),
                    ),
                    body: Center(
                        child: Text('exit'),
                    ),
                ),
            );
        }
    }

    这里有另外一种情况就是,当我们填写一些表单时,如果没填完毕就直接想要退出,这时也需要用到弹窗警告是否确定退出,这种情况form widget就直接提供了这个属性,使用方法跟上面一样;

     new Form(
           onWillPop: _onBackPressed,
           key: _formKey,
           autovalidate: true,
        child:。。。。
    }
  • 相关阅读:
    isinstance函数
    Django之ORM那些相关操作
    Django ~ 2
    Django ~ 1
    Django详解之models操作
    Django模板语言相关内容
    livevent的几个问题
    客户端,服务器发包走向
    关闭客户端连接的两种情况
    std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
  • 原文地址:https://www.cnblogs.com/pjl43/p/9947176.html
Copyright © 2011-2022 走看看