使用WillPopScope的默认构造函数实现,onWillPop回调函数返回的Future最终值为false时,当前路由不出栈(不会返回)。
主要是为了避免用户误触返回按钮导致app退出。
import 'package:flutter/material.dart';
main()=>runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text("1秒内连续按两次返回键退出"),
centerTitle: true,
),
body: const MyHomePage()
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
DateTime? _dateTime;//上次点击的时间
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
_dateTime = DateTime.now();
if(_dateTime == null || DateTime.now().difference(_dateTime!) > const Duration(seconds: 1)){
_dateTime = DateTime.now();
return false;
}
return true;
},
child: Container(
alignment: Alignment.center,
child: const Text("1秒内连续按两次返回键退出"),
),
);
}
}
文章评论