initEasyApp function
Future<void>
initEasyApp({
- bool? showOnError,
- VoidCallback? appBaseURLChangedCallback,
- ValueChanged<
String> ? customExceptionReport, - bool logPermanent = false,
可切环境、查看日志 additional arguments: --dart-define=app-debug-flag=true flutter run --release --dart-define=app-debug-flag=true
Implementation
Future<void> initEasyApp(
{bool? showOnError,
VoidCallback? appBaseURLChangedCallback,
ValueChanged<String>? customExceptionReport,
bool logPermanent = false}) async {
/// https://api.flutter-io.cn/flutter/dart-core/bool/bool.fromEnvironment.html
const appDebugFlag = bool.fromEnvironment("app-debug-flag");
isAppDebugFlag = appDebugFlag;
_appBaseURLChangedCallback = appBaseURLChangedCallback;
WidgetsFlutterBinding.ensureInitialized();
BaseEasyLoading.instance.maskType = BaseEasyLoadingMaskType.black;
final utils = await Future.wait([
PackageInfoUtil.init(),
SharedPreferencesUtil.init(),
]);
Get.put(EasyLogConsoleController(), permanent: logPermanent);
void localLogWriter(String text, {bool isError = false}) {
if (isError) {
logError(text);
} else {
logDebug(text);
}
}
Get.config(
enableLog: isDebug || isAppDebugFlag,
logWriterCallback: localLogWriter,
);
logInfo("Init: $utils");
if (isAppDebugFlag) {
final network = await initSelectedBaseURLType();
logInfo("Network: $network");
}
if (showOnError ?? isAppDebugFlag) {
Future<void> showError(String middleText) async {
if (Get.context == null) {
logWarning("捕获到异常: \n$middleText");
} else {
if (customExceptionReport != null) {
customExceptionReport(middleText);
}
}
}
// 先将 onerror 保存起来
var onError = FlutterError.onError;
// onError是FlutterError的一个静态属性,它有一个默认的处理方法 dumpErrorToConsole
FlutterError.onError = (errorDetails) {
showError("$errorDetails");
// 调用默认的onError处理
onError?.call(errorDetails);
};
// 官方推荐使用
PlatformDispatcher.instance.onError = (error, stack) {
showError("$error\n$stack");
return true;
};
}
}