Files
guangya_flutter/lib/main.dart
T

71 lines
2.0 KiB
Dart

import 'dart:io';
import 'dart:ui' show PlatformDispatcher;
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:window_manager/window_manager.dart';
import 'package:media_kit/media_kit.dart';
import 'core/storage/storage_manager.dart';
import 'core/logging/app_logger.dart';
import 'core/http/dio_client.dart';
import 'app/app.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
MediaKit.ensureInitialized();
// Init Hive for persistent storage
await StorageManager.init();
await AppLogger.initialize();
FlutterError.onError = (details) {
AppLogger.error(
'Flutter',
details.exceptionAsString(),
stackTrace: details.stack,
);
FlutterError.presentError(details);
};
PlatformDispatcher.instance.onError = (error, stackTrace) {
AppLogger.error('Dart', '未捕获异常', error: error, stackTrace: stackTrace);
return true;
};
// Init Dio HTTP client
DioClient.init();
if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) {
await windowManager.ensureInitialized();
const options = WindowOptions(
size: Size(1600, 900),
minimumSize: Size(1200, 800),
center: true,
backgroundColor: Colors.transparent,
titleBarStyle: TitleBarStyle.hidden,
);
windowManager.waitUntilReadyToShow(options, () async {
await windowManager.show();
await windowManager.focus();
});
}
// Trigger network permission
_triggerNetworkPermission();
runApp(const ProviderScope(child: GuangyaApp()));
}
/// Startup network permission trigger
void _triggerNetworkPermission() {
Future.delayed(const Duration(seconds: 2), () async {
try {
final url = Uri.parse('https://www.baidu.com');
final client = HttpClient();
client.connectionTimeout = const Duration(seconds: 5);
final request = await client.getUrl(url);
await request.close();
client.close();
} catch (_) {
// Silently ignore - permission dialog may have been shown
}
});
}