mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2026-02-05 03:32:18 +00:00
Compare commits
8 Commits
fix-hard-s
...
6f839aea24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f839aea24 | ||
|
|
617563fb6c | ||
|
|
75c0ac3285 | ||
|
|
4260c7cc65 | ||
|
|
2595692107 | ||
|
|
c86b4cc0bc | ||
|
|
d46c829959 | ||
|
|
84e5f5e869 |
@@ -6,6 +6,7 @@ import 'package:friflex_starter/app/theme/theme_notifier.dart';
|
||||
import 'package:friflex_starter/di/di_container.dart';
|
||||
import 'package:friflex_starter/l10n/gen/app_localizations.dart';
|
||||
import 'package:friflex_starter/l10n/localization_notifier.dart';
|
||||
import 'package:friflex_starter/router/app_router.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
/// {@template app}
|
||||
@@ -13,21 +14,39 @@ import 'package:go_router/go_router.dart';
|
||||
///
|
||||
/// Отвечает за:
|
||||
/// - Настройку провайдеров для темы и локализации
|
||||
/// - Инициализацию роутера приложения
|
||||
/// {@endtemplate}
|
||||
class AppRoot extends StatelessWidget {
|
||||
class AppRoot extends StatefulWidget {
|
||||
/// {@macro app_root}
|
||||
const AppRoot({required this.diContainer, required this.router, super.key});
|
||||
const AppRoot({required this.diContainer, super.key});
|
||||
|
||||
/// Контейнер зависимостей
|
||||
final DiContainer diContainer;
|
||||
|
||||
@override
|
||||
State<AppRoot> createState() => _AppRootState();
|
||||
}
|
||||
|
||||
class _AppRootState extends State<AppRoot> {
|
||||
/// Роутер приложения
|
||||
final GoRouter router;
|
||||
late final GoRouter router;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
router = AppRouter.createRouter(widget.diContainer.debugService);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
router.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppProviders(
|
||||
diContainer: diContainer,
|
||||
diContainer: widget.diContainer,
|
||||
child: LocalizationConsumer(
|
||||
builder: (localizationContext) {
|
||||
return ThemeConsumer(
|
||||
|
||||
@@ -23,7 +23,20 @@ class AppRouter {
|
||||
|
||||
/// Метод для создания экземпляра GoRouter
|
||||
static GoRouter createRouter(IDebugService debugService) {
|
||||
return GoRouter(
|
||||
try {
|
||||
return _init(debugService);
|
||||
} on Object catch (error, stackTrace) {
|
||||
debugService.logError(
|
||||
'Ошибка при создании роутера',
|
||||
error: error,
|
||||
stackTrace: stackTrace,
|
||||
);
|
||||
throw StateError('Не удалось создать роутер: $error');
|
||||
}
|
||||
}
|
||||
|
||||
/// Внутренний метод для инициализации роутера
|
||||
static GoRouter _init(IDebugService debugService) => GoRouter(
|
||||
navigatorKey: rootNavigatorKey,
|
||||
initialLocation: initialLocation,
|
||||
observers: [debugService.routeObserver],
|
||||
@@ -42,4 +55,3 @@ class AppRouter {
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import 'package:friflex_starter/di/di_container.dart';
|
||||
import 'package:friflex_starter/features/debug/debug_service.dart';
|
||||
import 'package:friflex_starter/features/debug/i_debug_service.dart';
|
||||
import 'package:friflex_starter/features/error/error_screen.dart';
|
||||
import 'package:friflex_starter/router/app_router.dart';
|
||||
import 'package:friflex_starter/runner/timer_runner.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
@@ -57,9 +56,6 @@ class AppRunner {
|
||||
// Инициализация приложения
|
||||
await _initApp();
|
||||
|
||||
// Инициализация роутера
|
||||
router = AppRouter.createRouter(_debugService);
|
||||
|
||||
final diContainer = await _initDependencies(
|
||||
debugService: _debugService,
|
||||
env: env,
|
||||
@@ -67,7 +63,7 @@ class AppRunner {
|
||||
);
|
||||
// Инициализация метода обработки ошибок
|
||||
_initErrorHandlers(_debugService);
|
||||
runApp(AppRoot(diContainer: diContainer, router: router));
|
||||
runApp(AppRoot(diContainer: diContainer));
|
||||
await _onAppLoaded();
|
||||
} on Object catch (e, stackTrace) {
|
||||
await _onAppLoaded();
|
||||
|
||||
Reference in New Issue
Block a user