/
siblun
/
ReadFlow
Обзор
Документация
Войти
/
siblun
/
ReadFlow
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
lib/app.dart
86 строк
3 KB
siblun
Refactoring
04 май 2026, 16:24
04 май 2026, 16:24
a6f9f35
Код
Авторство
О чём код?
import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:provider/provider.dart'; import 'package:isar_community/isar.dart'; import 'core/router/app_router.dart'; import 'data/file_storage.dart'; import 'data/repositories/book_repository_impl.dart'; import 'data/repositories/session_repository_impl.dart'; import 'data/repositories/note_repository_impl.dart'; import 'presentation/providers/book_provider.dart'; import 'presentation/providers/session_provider.dart'; import 'presentation/providers/note_provider.dart'; import 'presentation/theme/app_theme.dart'; class App extends StatelessWidget { final Isar isar; final FileStorage fileStorage; const App({super.key, required this.isar, required this.fileStorage}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ Provider<FileStorage>.value(value: fileStorage), Provider<BookRepositoryImpl>( create: (context) => BookRepositoryImpl(isar, fileStorage), ), Provider<SessionRepositoryImpl>( create: (context) => SessionRepositoryImpl(isar), ), Provider<NoteRepositoryImpl>( create: (context) => NoteRepositoryImpl(isar), ), ChangeNotifierProvider<BookProvider>( create: (context) { final bookRepo = context.read<BookRepositoryImpl>(); final sessionRepo = context.read<SessionRepositoryImpl>(); final noteRepo = context.read<NoteRepositoryImpl>(); return BookProvider(bookRepo, fileStorage, sessionRepo, noteRepo)..initialize(); }, ), ChangeNotifierProvider<NoteProvider>( create: (context) { final repo = context.read<NoteRepositoryImpl>(); return NoteProvider(repo); }, ), ChangeNotifierProxyProvider3< SessionRepositoryImpl, BookProvider, NoteProvider, SessionProvider>( create: (context) { final sessionRepo = context.read<SessionRepositoryImpl>(); final bookProvider = context.read<BookProvider>(); final noteProvider = context.read<NoteProvider>(); final provider = SessionProvider(sessionRepo, bookProvider, noteProvider); provider.initializeAll(); return provider; }, update: (context, sessionRepo, bookProvider, noteProvider, previous) { return previous ?? SessionProvider(sessionRepo, bookProvider, noteProvider); }, ), ], child: ScreenUtilInit( designSize: const Size(375, 812), minTextAdapt: true, splitScreenMode: true, builder: (context, child) => MaterialApp.router( title: 'ReadFlow', theme: AppTheme.lightTheme, debugShowCheckedModeBanner: false, routerConfig: AppRouter.router, ), ), ); } }