send the release v9 to tk women. fixed restart issue
parent
f97fb5c78b
commit
a6df0764fb
@ -1,38 +1,95 @@
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:hmg_qline/constants/app_constants.dart';
|
|
||||||
import 'package:hmg_qline/services/logger_service.dart';
|
import 'package:hmg_qline/services/logger_service.dart';
|
||||||
import 'package:hmg_qline/utilities/enums.dart';
|
import 'package:hmg_qline/utilities/enums.dart';
|
||||||
import 'package:restart_app/restart_app.dart';
|
|
||||||
|
|
||||||
abstract class NativeMethodChannelService {
|
abstract class NativeMethodChannelService {
|
||||||
void reopenApp();
|
void reopenApp();
|
||||||
|
|
||||||
Future<void> restartApp();
|
Future<void> restartApp();
|
||||||
|
|
||||||
|
Future<void> restartDevice();
|
||||||
|
|
||||||
|
Future<void> clearAllResources();
|
||||||
|
|
||||||
|
Future<void> smartRestart({bool forceRestart = false, bool cleanupFirst = true});
|
||||||
}
|
}
|
||||||
|
|
||||||
class NativeMethodChannelServiceImp implements NativeMethodChannelService {
|
class NativeMethodChannelServiceImp implements NativeMethodChannelService {
|
||||||
MethodChannel platform;
|
static const MethodChannel _platform = MethodChannel('com.example.hmg_qline/foreground');
|
||||||
LoggerService loggerService;
|
LoggerService loggerService;
|
||||||
|
|
||||||
NativeMethodChannelServiceImp({required this.platform, required this.loggerService});
|
NativeMethodChannelServiceImp({required this.loggerService});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void reopenApp() async {
|
void reopenApp() async {
|
||||||
try {
|
try {
|
||||||
await platform.invokeMethod(AppStrings.openAppNativeFunctionName);
|
loggerService.logInfo("Attempting to reopen app");
|
||||||
|
await _platform.invokeMethod('reopenApp');
|
||||||
|
loggerService.logInfo("App reopened successfully");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
loggerService.logError("Error launching app: $e");
|
loggerService.logError("Error launching app: $e");
|
||||||
loggerService.logToFile(message: "Error launching app: $e", source: "reopenApp -> native_method_handler.dart ", type: LogTypeEnum.error);
|
loggerService.logToFile(message: "Error launching app: $e", source: "reopenApp -> native_method_handler.dart", type: LogTypeEnum.error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> restartApp() async {
|
Future<void> restartApp() async {
|
||||||
try {
|
try {
|
||||||
await Restart.restartApp();
|
loggerService.logInfo("Initiating app restart");
|
||||||
|
await _platform.invokeMethod('restartApp');
|
||||||
|
loggerService.logInfo("App restart command sent successfully");
|
||||||
|
} catch (e) {
|
||||||
|
loggerService.logError("Error restarting app: $e");
|
||||||
|
loggerService.logToFile(message: "Error restarting app: $e", source: "restartApp -> native_method_handler.dart", type: LogTypeEnum.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> restartDevice() async {
|
||||||
|
try {
|
||||||
|
loggerService.logInfo("Attempting device restart (requires root)");
|
||||||
|
|
||||||
|
final result = await _platform.invokeMethod('restartDevice');
|
||||||
|
loggerService.logInfo("Device restart initiated: $result");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
loggerService.logError("Error restarting App : $e");
|
loggerService.logError("Device restart failed: $e");
|
||||||
loggerService.logToFile(message: "Error restarting app: $e", source: "restartApp -> native_method_handler.dart ", type: LogTypeEnum.error);
|
loggerService.logToFile(message: "Device restart failed: $e", source: "restartDevice -> native_method_handler.dart", type: LogTypeEnum.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> clearAllResources() async {
|
||||||
|
try {
|
||||||
|
loggerService.logInfo("Clearing all native resources");
|
||||||
|
|
||||||
|
final result = await _platform.invokeMethod('clearAllResources');
|
||||||
|
loggerService.logInfo("All resources cleared: $result");
|
||||||
|
} catch (e) {
|
||||||
|
loggerService.logError("Error clearing resources: $e");
|
||||||
|
loggerService.logToFile(message: "Error clearing resources: $e", source: "clearAllResources -> native_method_handler.dart", type: LogTypeEnum.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enhanced restart method with multiple fallback options
|
||||||
|
@override
|
||||||
|
Future<void> smartRestart({bool forceRestart = false, bool cleanupFirst = true}) async {
|
||||||
|
try {
|
||||||
|
loggerService.logInfo("Starting smart restart - forceRestart: $forceRestart, cleanupFirst: $cleanupFirst");
|
||||||
|
|
||||||
|
if (cleanupFirst) {
|
||||||
|
await clearAllResources();
|
||||||
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
loggerService.logInfo("Initiating app restart");
|
||||||
|
await _platform.invokeMethod('restartApp');
|
||||||
|
loggerService.logInfo("App restart command sent successfully");
|
||||||
|
} catch (e) {
|
||||||
|
loggerService.logError("Error restarting app: $e");
|
||||||
|
loggerService.logToFile(message: "Error restarting app: $e", source: "restartApp -> native_method_handler.dart", type: LogTypeEnum.error);
|
||||||
|
}
|
||||||
|
} catch (primaryError) {
|
||||||
|
loggerService.logError("Primary restart failed, trying fallback methods: $primaryError");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue