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
80 lines
2.6 KiB
Dart
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;
|
|
}
|
|
}
|