olshab f0a17af845 final improvements
added internet permission in manifest
added unique app bar titles for each section
fixed card layout
fixed card details page layout
added appbar button for toggling dark mode
2024-12-17 14:31:39 +04:00

80 lines
2.6 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_android_app/presentation/favourites_bloc/favourites_bloc.dart';
import 'package:flutter_android_app/presentation/home_page/bloc/bloc.dart';
import 'package:flutter_android_app/presentation/home_page/home_page.dart';
import 'package:flutter_android_app/presentation/locale_bloc/locale_bloc.dart';
import 'package:flutter_android_app/presentation/locale_bloc/locale_state.dart';
import 'package:flutter_android_app/repositories/crypto_repository.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'components/locale/l10n/app_localizations.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isDarkMode = false;
@override
Widget build(BuildContext context) {
return BlocProvider<FavouritesBloc>(
lazy: false,
create: (context) => FavouritesBloc(),
child: BlocProvider<LocaleBloc>(
lazy: false,
create: (context) => LocaleBloc(Locale(_getLangCode(Platform.localeName))),
child: BlocBuilder<LocaleBloc, LocaleState>(
builder: (context, state) => MaterialApp(
title: 'Cryptocurrency Exchange App',
locale: state.currentLocale,
localizationsDelegates: AppLocale.localizationsDelegates,
supportedLocales: AppLocale.supportedLocales,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.indigoAccent,
brightness: isDarkMode ? Brightness.dark : Brightness.light,
),
useMaterial3: true,
brightness: isDarkMode ? Brightness.dark : Brightness.light,
),
debugShowCheckedModeBanner: false,
home: RepositoryProvider<CryptoRepository>(
lazy: true,
create: (_) => CryptoRepository(),
child: BlocProvider<HomeBloc>(
lazy: false,
create: (context) => HomeBloc(context.read<CryptoRepository>()),
child: MainScaffold(
toggleDarkMode: _toggleDarkMode,
isDarkModeSelected: isDarkMode,
),
),
),
),
),
),
);
}
void _toggleDarkMode() {
setState(() {
isDarkMode = !isDarkMode;
});
}
String _getLangCode(String fullLocaleName) {
int index = fullLocaleName.indexOf('_');
return index != -1 ? fullLocaleName.substring(0, index) : fullLocaleName;
}
}