feat: 两次退出确认
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
@ -53,6 +54,7 @@ class MainController extends GetxController {
|
|||||||
final StreamController<bool> bottomBarStream =
|
final StreamController<bool> bottomBarStream =
|
||||||
StreamController<bool>.broadcast();
|
StreamController<bool>.broadcast();
|
||||||
Box setting = GStrorage.setting;
|
Box setting = GStrorage.setting;
|
||||||
|
DateTime? _lastPressedAt;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
@ -61,4 +63,16 @@ class MainController extends GetxController {
|
|||||||
Utils.checkUpdata();
|
Utils.checkUpdata();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> onBackPressed(BuildContext context) {
|
||||||
|
if (_lastPressedAt == null ||
|
||||||
|
DateTime.now().difference(_lastPressedAt!) >
|
||||||
|
const Duration(seconds: 2)) {
|
||||||
|
// 两次点击时间间隔超过2秒,重新记录时间戳
|
||||||
|
_lastPressedAt = DateTime.now();
|
||||||
|
SmartDialog.showToast("再按一次退出Pili");
|
||||||
|
return Future.value(false); // 不退出应用
|
||||||
|
}
|
||||||
|
return Future.value(true); // 退出应用
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,7 +110,9 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
|
|||||||
MediaQuery.of(context).size.width * 9 / 16;
|
MediaQuery.of(context).size.width * 9 / 16;
|
||||||
localCache.put('sheetHeight', sheetHeight);
|
localCache.put('sheetHeight', sheetHeight);
|
||||||
localCache.put('statusBarHeight', statusBarHeight);
|
localCache.put('statusBarHeight', statusBarHeight);
|
||||||
return Scaffold(
|
return WillPopScope(
|
||||||
|
onWillPop: () => _mainController.onBackPressed(context),
|
||||||
|
child: Scaffold(
|
||||||
extendBody: true,
|
extendBody: true,
|
||||||
body: FadeTransition(
|
body: FadeTransition(
|
||||||
opacity: _fadeAnimation!,
|
opacity: _fadeAnimation!,
|
||||||
@ -160,6 +162,7 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user