zoukankan      html  css  js  c++  java
  • Flutter WillPopScope 拦截路由返回

    典型应用是如果用户尝试退出表单,则警告用户有关未保存的表单数据。连按两次返回键退出APP。

    工作示例

    import 'dart:async';
    
    import 'package:flutter/material.dart';
    import 'package:toast/toast.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          initialRoute: '/',
          routes: {
            '/': (context) => HomePage(),
          },
        );
      }
    }
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      Timer _closeTimer;
      @override
      Widget build(BuildContext context) {
        return WillPopScope(
          onWillPop: () async {
            if (_closeTimer?.isActive ?? false) {
              return true;
            }
            Toast.show(
              "再次点击退出app",
              context,
              duration: Toast.LENGTH_SHORT,
              gravity: Toast.BOTTOM,
            );
            _closeTimer = Timer(Duration(milliseconds: 1000), null);
            return false;
          },
          child: Scaffold(
            appBar: AppBar(
              title: Text('Home Page'),
            ),
            body: Center(
              child: Text('home page'),
            ),
          ),
        );
      }
    }
    
  • 相关阅读:
    解决死锁四大方式
    Windows内存管理简介:
    排序算法优劣
    排序
    HTTPs
    http和https的异同
    HTTP协议
    FTP与TFTP
    tomcat热部署
    开发心得体会
  • 原文地址:https://www.cnblogs.com/ajanuw/p/11669904.html
Copyright © 2011-2022 走看看