From 9321004698bbb3e2bcd9b4da3ed23804f08b33ed Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 27 Aug 2024 16:12:44 +0800 Subject: [PATCH] mod: pop back --- .../com/orz12/PiliPalaX/MainActivity.kt | 16 +++++++++++ lib/pages/main/controller.dart | 27 ++++++++++++------- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/android/app/src/main/kotlin/com/orz12/PiliPalaX/MainActivity.kt b/android/app/src/main/kotlin/com/orz12/PiliPalaX/MainActivity.kt index 97964c7c..0e9d8105 100644 --- a/android/app/src/main/kotlin/com/orz12/PiliPalaX/MainActivity.kt +++ b/android/app/src/main/kotlin/com/orz12/PiliPalaX/MainActivity.kt @@ -4,6 +4,7 @@ import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel import com.ryanheise.audioservice.AudioServiceActivity +import android.content.Intent import android.os.Build import android.os.Bundle import android.view.WindowManager.LayoutParams @@ -14,6 +15,21 @@ class MainActivity : AudioServiceActivity() { override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) methodChannel = MethodChannel(flutterEngine!!.getDartExecutor()!!.getBinaryMessenger(), CHANNEL) + methodChannel.setMethodCallHandler { call, result -> + if (call.method == "back") { + back() + } else { + result.notImplemented() + } + } + } + + private fun back() { + val intent = Intent(Intent.ACTION_MAIN).apply { + addCategory(Intent.CATEGORY_HOME) + flags = Intent.FLAG_ACTIVITY_NEW_TASK + } + startActivity(intent) } override fun onCreate(savedInstanceState: Bundle?) { diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 88061b83..49eb4637 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -55,18 +56,24 @@ class MainController extends GetxController { } void onBackPressed(BuildContext context) { - if (_lastPressedAt == null || - DateTime.now().difference(_lastPressedAt!) > - const Duration(seconds: 2)) { - // 两次点击时间间隔超过2秒,重新记录时间戳 - _lastPressedAt = DateTime.now(); - if (selectedIndex != 0) { - pageController.jumpTo(0); + // if (_lastPressedAt == null || + // DateTime.now().difference(_lastPressedAt!) > + // const Duration(seconds: 2)) { + // 两次点击时间间隔超过2秒,重新记录时间戳 + // _lastPressedAt = DateTime.now(); + if (selectedIndex != 0) { + pageController.jumpTo(0); + } else { + if (Platform.isAndroid) { + const MethodChannel("onUserLeaveHint").invokeMethod('back'); + } else { + SystemNavigator.pop(); // 退出应用 } - SmartDialog.showToast("再按一次退出PiliPalaX"); - return; // 不退出应用 } - SystemNavigator.pop(); // 退出应用 + // SmartDialog.showToast("再按一次退出PiliPalaX"); + // return; // 不退出应用 + // } + // SystemNavigator.pop(); // 退出应用 } void getUnreadDynamic() async {