mnemo_cards/mnemo_cards_web_v2/lib/main.dart

50 lines
1.3 KiB
Dart
Raw Normal View History

2025-11-10 23:55:41 +00:00
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
2025-11-27 21:06:26 +00:00
import 'package:telegram_web_app/telegram_web_app.dart';
2025-11-10 23:55:41 +00:00
import 'app.dart';
import 'di/app_scope/app_scope_holder.dart';
/// Global scaffold messenger key for showing snackbars from anywhere
final scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
2025-11-27 21:06:26 +00:00
// Telegram Web App integration
if (TelegramWebApp.instance.isSupported) {
TelegramWebApp.instance.ready();
await Future<void>.delayed(const Duration(seconds: 1));
TelegramWebApp.instance.disableVerticalSwipes();
}
2025-11-10 23:55:41 +00:00
// Настройка логирования ошибок
FlutterError.onError = (details) {
log(
'Flutter error',
error: details.exception,
stackTrace: details.stack,
name: 'main',
);
};
// Создание AppScope (с асинхронной инициализацией внутри)
final appScopeHolder = AppScopeHolder();
appScopeHolder.create();
log('App initialized successfully', name: 'main');
runApp(
ScreenUtilInit(
2026-01-03 13:14:27 +00:00
designSize: const Size(600, 800),
2025-11-10 23:55:41 +00:00
minTextAdapt: true,
splitScreenMode: true,
builder: (context, child) {
return App(appScopeHolder: appScopeHolder);
},
),
);
}