Flutter WillPopScope 拦截路由返回
2023-09-14 08:58:44 时间
- WillPopScope
- addScopedWillPopCallback 启用此路由以使用户否决尝试以将其关闭。
典型应用是如果用户尝试退出表单,则警告用户有关未保存的表单数据。连按两次返回键退出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'),
),
),
);
}
}
相关文章
- linux 路由管理
- flutter路由
- 学一学Flutter新的导航和路由系统
- 一个网络系统,哪有那么多动态路由,基本上都是静态路由!
- 三层交换机实现VLAN间路由通信
- Vue路由嵌套控制台发出警告Named Route ‘Home‘ has a default child route. When navigating to this named route (:to
- H3C路由交换 RRPP协议
- (二十一)路由组件的懒加载
- 第132期:flutter的导航和路由
- vue3+ts项目安装路由
- zuul路由参数
- python-Django-URL 路由(二)
- 安装Linux安装路由器的步骤(linux加路由的)
- 器Linux下如何删除路由器设置(linux如何删除路由)
- Redmi AX3000路由图赏:WiFi 6技术加持 首发249元
- 轻松搞定Linux系统路由配置(linux配置路由)
- 使用Linux搭建家庭网络路由器(用linux做路由)