Files
chen08209 5984c161c5 fix(core): keep very large profiles from crashing the app
Changelog: Large profiles no longer crash; downloads trust core CAs
2026-10-16 22:54:53 +08:00

75 lines
2.1 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/pages/error.dart';
import 'package:material_ui/material_ui.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:rust_api/rust_api.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_platform_interface.dart';
import 'application.dart';
import 'bootstrap.dart';
import 'common/app_data.dart';
import 'common/common.dart';
import 'common/preferences_store.dart';
import 'common/window.dart';
void main(List<String> args) {
runZonedGuarded(
() async {
WidgetsFlutterBinding.ensureInitialized();
if (Platform.isWindows || Platform.isLinux) {
SharedPreferencesStorePlatform.instance = AtomicFilePreferencesStore(
appPath.sharedPreferencesPath,
);
}
if (Platform.isLinux) {
linkManager.seedInitialLink(args);
}
FlutterError.onError = (details) {
Future.microtask(() {
commonPrint.log(
'exception: ${details.exception} stack: ${details.stack}',
logLevel: LogLevel.warning,
);
});
};
try {
await RustLib.init();
final version = await system.init();
final container = await bootstrap.init(version);
await FlClashHttpOverrides.trustCoreRoots();
HttpOverrides.global = FlClashHttpOverrides(container);
request.attach(container.read);
runApp(
UncontrolledProviderScope(
container: container,
child: const Application(),
),
);
} catch (e, s) {
runApp(
InitErrorApp(
error: e,
stack: s,
onClearData: clearAppData,
onExit: _exitAfterInitFailure,
),
);
unawaited(window?.showInitFailure(onExit: _exitAfterInitFailure));
}
},
(error, stack) {
FlutterError.reportError(
FlutterErrorDetails(exception: error, stack: stack),
);
},
);
}
Future<void> _exitAfterInitFailure() async {
await system.exit();
window?.forceExit();
}