Commit 54b39c5d by tanghuan

showAppMenu, getDeviceInfo

1 parent 7a995230
......@@ -2,6 +2,7 @@ import 'dart:io' show Platform;
import 'package:appframe/config/constant.dart';
import 'package:appframe/data/repositories/message/app_info_handler.dart';
import 'package:appframe/data/repositories/message/app_menu_handler.dart';
import 'package:appframe/data/repositories/message/audio_player_handler.dart';
import 'package:appframe/data/repositories/message/audio_recorder_handler.dart';
import 'package:appframe/data/repositories/message/choose_file_handler.dart';
......@@ -104,6 +105,9 @@ Future<void> setupLocator() async {
/// 窗口信息
getIt.registerLazySingleton<MessageHandler>(() => WindowInfoHandler(), instanceName: 'getWindowInfo');
/// 显示应用菜单
getIt.registerLazySingleton<MessageHandler>(() => AppMenuHandler(), instanceName: 'showAppMenu');
/// 本地缓存
// Android已测试通过
getIt.registerLazySingleton<MessageHandler>(() => GetStorageHandler(), instanceName: 'getStorage');
......
import 'package:appframe/config/routes.dart';
import 'package:appframe/services/dispatcher.dart';
class AppMenuHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(params) async {
router.push('/setting');
return true;
}
}
import 'dart:io';
import 'dart:ui';
import 'package:appframe/services/dispatcher.dart';
import 'package:device_info_plus/device_info_plus.dart';
......@@ -6,9 +7,11 @@ import 'package:device_info_plus/device_info_plus.dart';
class DeviceInfoHandler extends MessageHandler {
@override
Future<Map<String, dynamic>> handleMessage(dynamic params) async {
var deviceInfoPlugin = DeviceInfoPlugin();
var viewPadding = PlatformDispatcher.instance.views.first.viewPadding;
var devicePixelRatio = PlatformDispatcher.instance.views.first.devicePixelRatio;
var statusBarHeight = viewPadding.top / devicePixelRatio;
// 测试效果,先随便响应一些数据
var deviceInfoPlugin = DeviceInfoPlugin();
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
return {
......@@ -18,21 +21,48 @@ class DeviceInfoHandler extends MessageHandler {
'brand': androidInfo.brand,
'model': androidInfo.model,
'system': androidInfo.version.release,
'platform': "Android",
'platform': 'Android',
'cpuType': androidInfo.hardware,
"memorySize": androidInfo.physicalRamSize,
'memorySize': _getAndroidMemorySize(androidInfo),
'statusBarHeight': statusBarHeight,
};
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo;
return {
"brand": "Apple",
"model": iosInfo.model,
"system": iosInfo.systemVersion,
"platform": "iOS",
"memorySize": (iosInfo.physicalRamSize ~/ (1024 * 1024)).toString(),
'abi': '',
'deviceAbi': '',
'benchmarkLevel': -1,
'brand': 'Apple',
'model': iosInfo.model,
'system': iosInfo.systemVersion,
'platform': 'iOS',
'cpuType': '',
'memorySize': (iosInfo.physicalRamSize ~/ (1024 * 1024)).toString(),
'statusBarHeight': statusBarHeight,
};
} else {
return {};
}
}
String _getAndroidMemorySize(AndroidDeviceInfo info) {
try {
final file = File('/proc/meminfo');
final lines = file.readAsLinesSync();
for (final line in lines) {
if (line.startsWith('MemTotal:')) {
final parts = line.trim().split(RegExp(r'\s+'));
if (parts.length >= 2) {
final kb = int.tryParse(parts[1]);
if (kb != null) {
return (kb ~/ 1024).toString();
}
}
}
}
} catch (_) {}
final raw = info.physicalRamSize;
return raw.toString();
}
}
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!