使用WillPopScope的默认构造函数实现,onWillPop回调函数返回的Future最终值为false时,当前路由不出栈(不会返回)。
主要是为了避免用户误触返回按钮导致app退出。
<code>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秒内连续按两次返回键退出"), ), ); } }</code>
文章评论