/
cheviohey
/
flutter_template
Обзор
Документация
Войти
/
cheviohey
/
flutter_template
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lib/application/application.dart
80 строк
3 KB
chevic
router commit
26 июл 2026, 13:05
26 июл 2026, 13:05
ad2792a
Код
Авторство
О чём код?
import 'package:flutter/material.dart'; import 'package:flutter_template/di/di_container.dart'; import 'package:flutter_template/di/di_services.dart'; import 'package:flutter_template/router/router_state_notifier.dart'; import 'package:provider/provider.dart'; import 'package:yx_scope_flutter/yx_scope_flutter.dart'; class Application extends StatefulWidget { final DiContainerHolder diContainerHolder; const Application({super.key, required this.diContainerHolder}); @override State<Application> createState() => _ApplicationState(); } class _ApplicationState extends State<Application> { @override void dispose() { widget.diContainerHolder.drop(); super.dispose(); } @override Widget build(BuildContext context) { return ScopeProvider( holder: widget.diContainerHolder, child: ScopeBuilder<DiContainer>.withPlaceholder( builder: (context, diContainer) { diContainer.diObserver.talker.verbose( 'init Application mode: ${diContainer.appEnv.name}', ); return MultiProvider( providers: [ /// ------[глобальные стейты приложения]-------------------- ChangeNotifierProvider<RouterStateNotifier>.value( value: diContainer.routerStateNotifierDep.get, ), ], /// ------[глобальные СЕРВИСЫ приложения]-------------------- child: ScopeProvider<DiServices>( holder: diContainer.diServicesDep.get, child: const _RouterWidget(), ), ); }, placeholder: const Center(child: CircularProgressIndicator()), ), ); } } class _RouterWidget extends StatelessWidget { const _RouterWidget(); @override Widget build(BuildContext context) { return ScopeBuilder<DiServices>.withPlaceholder( builder: (context, diServices) => MaterialApp.router( // builder: (context, child) => child!, debugShowCheckedModeBanner: diServices.parent.appEnv.showDebugBanner, routeInformationParser: diServices.appRouterServiceDep.get.router.routeInformationParser, routerDelegate: diServices.appRouterServiceDep.get.router.routerDelegate, routeInformationProvider: diServices.appRouterServiceDep.get.router.routeInformationProvider, backButtonDispatcher: diServices.appRouterServiceDep.get.router.backButtonDispatcher, ), placeholder: const Center(child: CircularProgressIndicator()), ); } }