码迷,mamicode.com
首页 > 其他好文 > 详细

Flutter WillPopScope 拦截路由返回

时间:2019-10-14 11:00:08      阅读:738      评论:0      收藏:0      [点我收藏+]

标签:add   pack   text   package   dsc   appbar   mod   ide   ISE   

典型应用是如果用户尝试退出表单,则警告用户有关未保存的表单数据。连按两次返回键退出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'),
        ),
      ),
    );
  }
}

Flutter WillPopScope 拦截路由返回

标签:add   pack   text   package   dsc   appbar   mod   ide   ISE   

原文地址:https://www.cnblogs.com/ajanuw/p/11669904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!