import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:tunas/clients/storage/storage_client.dart'; import 'package:tunas/pages/home/home_page.dart'; import 'package:tunas/repositories/json/json_repository.dart'; import 'package:tunas/repositories/metadata/metadata_repository.dart'; import 'package:tunas/repositories/transactions/transactions_repository.dart'; import 'package:tunas/theme.dart'; class App extends StatefulWidget { const App({super.key}); @override State createState() => _AppState(); } class _AppState extends State { @override Widget build(BuildContext context) { return const AppView(); } } class AppView extends StatefulWidget { const AppView({super.key}); @override State createState() => _AppViewState(); } class _AppViewState extends State { late final StorageClient _storageClient; late final JsonRepository _jsonRepository; late final TransactionsRepository _transactionsRepository; late final MetadataRepository _metadataRepository; @override void initState() { super.initState(); _storageClient = StorageClient(); _jsonRepository = JsonRepository(storageClient: _storageClient); _transactionsRepository = TransactionsRepository(jsonRepository: _jsonRepository); _metadataRepository = MetadataRepository(jsonRepository: _jsonRepository); _transactionsRepository.loadTransactions(); _metadataRepository.loadMetadata(); } @override Widget build(BuildContext context) { return MultiRepositoryProvider( providers: [ RepositoryProvider.value(value: _jsonRepository), RepositoryProvider.value(value: _transactionsRepository), RepositoryProvider.value(value: _metadataRepository), ], child: MaterialApp( title: 'Tunas', theme: ThemeData(useMaterial3: true, colorScheme: lightColorScheme), darkTheme: ThemeData(useMaterial3: true, colorScheme: darkColorScheme), themeMode: ThemeMode.dark, initialRoute: '/home', routes: { '/home':(context) => const HomePage(), }, localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate ], supportedLocales: const [ Locale('fr') ], ) ); } }