From 8988c59800792b4786ce80a92c753360fd979296 Mon Sep 17 00:00:00 2001
From: anfe <448468458@qq.com>
Date: Sat, 18 May 2024 14:57:02 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=20flutter=20=E9=94=99?=
=?UTF-8?q?=E8=AF=AF=E7=9B=91=E6=8E=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ios/Runner/Info.plist | 10 +++
lib/app_settings/app_settings.dart | 85 +++++++++++++-----------
lib/main.dart | 32 ++++++---
lib/mine/about/debug/debug_console.dart | 4 +-
lib/translations/translation_loader.dart | 20 +++---
5 files changed, 91 insertions(+), 60 deletions(-)
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 9cfa745c..9266fd0f 100755
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -48,6 +48,16 @@
123456
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLName
+ weixin
+ CFBundleURLSchemes
+
+ wxbe340095d2b8fd51
+
+
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
diff --git a/lib/app_settings/app_settings.dart b/lib/app_settings/app_settings.dart
index 7998bf68..04bbe53d 100755
--- a/lib/app_settings/app_settings.dart
+++ b/lib/app_settings/app_settings.dart
@@ -4,38 +4,41 @@ import 'dart:io';
import 'package:star_lock/mine/about/debug/debug_console.dart';
-
class AppLog {
static bool _printLog = false;
static bool _onlyError = false;
- static showLog({required bool printLog, bool? onlyError}){
+ static void showLog({required bool printLog, bool? onlyError}) {
_printLog = printLog;
_onlyError = onlyError ?? false;
}
- static log(String msg,{bool? error}){
+
+ static void log(String msg, {StackTrace? stackTrace, bool? error}) {
msg = '${DateTime.now().toIso8601String()} : $msg';
- DebugConsole.info(msg);
- if(!kDebugMode)return;
+ DebugConsole.info(msg, stackTrace: stackTrace, isErr: error ?? false);
+ if (!kDebugMode) {
+ return;
+ }
error = error ?? false;
// if(!_printLog)return;
// if(_onlyError && !error) return;
- if(error){
- msg = '----->>> $msg';
+ if (error) {
+ msg = '----->>> $msg $stackTrace';
}
Get.log(msg);
}
}
class AppPlatform {
- static bool isIOS = Platform.isIOS;
- static bool isAndroid = Platform.isAndroid;
- static String platformString(){
+ static bool isIOS = Platform.isIOS;
+ static bool isAndroid = Platform.isAndroid;
+
+ static String platformString() {
String name = 'unknown';
- if(isIOS){
+ if (isIOS) {
name = 'iOS';
}
- if(isAndroid){
+ if (isAndroid) {
name = 'Android';
}
return name;
@@ -44,50 +47,59 @@ class AppPlatform {
static String _brand = 'unknown';
static int _sdkInt = 23;
- static void setBrandString(String brand){
+ static void setBrandString(String brand) {
_brand = brand;
}
- static String getBrandString()=>_brand;
- static void setSDKInt(int sdkInt){
+
+ static String getBrandString() => _brand;
+
+ static void setSDKInt(int sdkInt) {
_sdkInt = sdkInt;
}
- static bool isSamsung()=>_brand.toLowerCase().contains('samsung');
- static int getSdkIntValue()=>_sdkInt;
- static bool onlyCanNetUpgrade()=>isSamsung() && (getSdkIntValue() >= 29);
+ static bool isSamsung() => _brand.toLowerCase().contains('samsung');
+
+ static int getSdkIntValue() => _sdkInt;
+
+ static bool onlyCanNetUpgrade() => isSamsung() && (getSdkIntValue() >= 29);
}
class AppMowerCodes {
- static int idCodeLength(){
+ static int idCodeLength() {
int len = 19;
return len;
}
+
static int fenceNameLength = 8;
static int registerCodeLength = 4;
}
class AppDate {
static String dateString() {
- return '${year()}-${month().toString().padLeft(2,'0')}-${day().toString()
- .padLeft(2,'0')}';
+ return '${year()}-${month().toString().padLeft(2, '0')}-${day().toString().padLeft(2, '0')}';
}
static String calendarString() {
- String temp = '${year()}${month().toString().padLeft(2,'0')}${day().toString()
- .padLeft(2,'0')}${hour().toString().padLeft(2,'0')}${second()
- .toString().padLeft(2,'0')}';
+ String temp =
+ '${year()}${month().toString().padLeft(2, '0')}${day().toString().padLeft(2, '0')}${hour().toString().padLeft(2, '0')}${second().toString().padLeft(2, '0')}';
return temp;
}
- static int year()=>DateTime.now().year;
- static int month()=>DateTime.now().month;
- static int day()=>DateTime.now().day;
- static int hour()=>DateTime.now().hour;
- static int minute()=>DateTime.now().minute;
- static int second()=>DateTime.now().second;
- static int weekDay()=>DateTime.now().weekday;
- static int timeZeroOffset()=>DateTime.now().timeZoneOffset.inHours;
+ static int year() => DateTime.now().year;
+ static int month() => DateTime.now().month;
+
+ static int day() => DateTime.now().day;
+
+ static int hour() => DateTime.now().hour;
+
+ static int minute() => DateTime.now().minute;
+
+ static int second() => DateTime.now().second;
+
+ static int weekDay() => DateTime.now().weekday;
+
+ static int timeZeroOffset() => DateTime.now().timeZoneOffset.inHours;
}
//TODO:错误类型
@@ -99,9 +111,9 @@ enum ErrorType {
}
class AppErrorCode {
- static int errorCode(ErrorType type){
+ static int errorCode(ErrorType type) {
int code = 0;
- switch(type){
+ switch (type) {
case ErrorType.modeNotMatch:
code = 1;
break;
@@ -118,8 +130,3 @@ class AppErrorCode {
return code;
}
}
-
-
-
-
-
diff --git a/lib/main.dart b/lib/main.dart
index 2d09e1a8..8b2c3710 100755
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,14 +1,16 @@
import 'dart:async';
+
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
+import 'package:get/get.dart';
import 'package:star_lock/flavors.dart';
-import 'package:star_lock/translations/trans_lib.dart';
-import 'app.dart';
import 'package:star_lock/tools/device_info_service.dart';
import 'package:star_lock/tools/platform_info_services.dart';
+import 'package:star_lock/translations/trans_lib.dart';
+
+import 'app.dart';
import 'app_settings/app_settings.dart';
import 'tools/store_service.dart';
-import 'package:get/get.dart';
// 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明
FutureOr main() async {
@@ -19,20 +21,32 @@ FutureOr main() async {
// 设置国际化信息
await _initTranslation();
- runApp(const MyApp());
+ //错误日志监控
+ FlutterError.onError = (FlutterErrorDetails details) async {
+ AppLog.log('error:${details.exception.toString()}',
+ stackTrace: details.stack, error: true);
+ Zone.current.handleUncaughtError(details.exception, details.stack!);
+ };
+
+ //错误日志监控
+ runZonedGuarded>(() async {
+ runApp(const MyApp());
+ }, (Object error, StackTrace stackTrace) async {
+ AppLog.log('error:$error', stackTrace: stackTrace, error: true);
+ });
if (AppPlatform.isAndroid) {
- SystemUiOverlayStyle systemUiOverlayStyle =
- const SystemUiOverlayStyle(statusBarColor: Colors.transparent);
+ const SystemUiOverlayStyle systemUiOverlayStyle =
+ SystemUiOverlayStyle(statusBarColor: Colors.transparent);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
}
// 设置国际化信息
Future _initTranslation() async => TranslationLoader.loadTranslation(
- zhSource: "images/lan/lan_zh.json",
- enSource: "images/lan/lan_en.json",
- keySource: "images/lan/lan_keys.json",
+ zhSource: 'images/lan/lan_zh.json',
+ enSource: 'images/lan/lan_en.json',
+ keySource: 'images/lan/lan_keys.json',
);
// 设置包名服务设备信息
diff --git a/lib/mine/about/debug/debug_console.dart b/lib/mine/about/debug/debug_console.dart
index b7a96d22..ebb3406a 100755
--- a/lib/mine/about/debug/debug_console.dart
+++ b/lib/mine/about/debug/debug_console.dart
@@ -8,7 +8,6 @@ import 'package:star_lock/mine/about/debug/controller.dart';
import 'package:star_lock/mine/about/debug/log.dart';
import 'package:star_lock/mine/about/debug/tile.dart';
-
/// # Debug Console
///
/// A console for debugging Flutter apps, and displaying console messages on the widget.
@@ -104,10 +103,11 @@ class DebugConsole extends StatefulWidget {
Object? message, {
DateTime? timestamp,
StackTrace? stackTrace,
+ bool isErr = false,
}) =>
log(
message,
- level: DebugConsoleLevel.info,
+ level: isErr ? DebugConsoleLevel.error : DebugConsoleLevel.info,
timestamp: timestamp,
stackTrace: stackTrace,
);
diff --git a/lib/translations/translation_loader.dart b/lib/translations/translation_loader.dart
index afdc737f..a8dd33ed 100755
--- a/lib/translations/translation_loader.dart
+++ b/lib/translations/translation_loader.dart
@@ -6,9 +6,9 @@ class TranslationLoader {
static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
static Map
- _zhMap = {},
- _enMap = {},
- _keyMap = {};
+ _zhMap = {},
+ _enMap = {},
+ _keyMap = {};
static Map get zhDic => _zhMap;
static Map get enDic => _enMap;
@@ -16,7 +16,7 @@ class TranslationLoader {
static LanKeyEntity? _lanKeyEntity;
static LanKeyEntity? get lanKeys => _lanKeyEntity;
- static Future loadTranslation({
+ static Future loadTranslation({
String? zhSource,
String? enSource,
String? keySource,}) async {
@@ -26,15 +26,15 @@ class TranslationLoader {
_lanKeyEntity = LanKeyEntity.fromJson(_keyMap);
}
- static Future