Files
karvon_market/app_code/lib/main.dart
jahongireshonqulov 9fbdabafb4 Initial commit
2025-10-17 19:42:02 +05:00

158 lines
6.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:grostore/app_lang.dart';
import 'package:grostore/configs/app_config.dart';
import 'package:grostore/configs/theme_config.dart';
import 'package:grostore/helpers/common_functions.dart';
import 'package:grostore/l10n/l10n.dart';
import 'package:grostore/presenters/address_presenter.dart';
import 'package:grostore/presenters/auth/auth_presenter.dart';
import 'package:grostore/presenters/bloc/lang/lang_bloc.dart';
import 'package:grostore/presenters/cart_presenter.dart';
import 'package:grostore/presenters/categories_presenter.dart';
import 'package:grostore/presenters/check_out_presenter.dart';
import 'package:grostore/presenters/coupon_presenter.dart';
import 'package:grostore/presenters/filter_presenter.dart';
import 'package:grostore/presenters/home_presenter.dart';
import 'package:grostore/presenters/landing_page_presenter.dart';
import 'package:grostore/presenters/order_details_presenter.dart';
import 'package:grostore/presenters/setting_presenter.dart';
import 'package:grostore/presenters/main_persenter.dart';
import 'package:grostore/presenters/order_presenter.dart';
import 'package:grostore/presenters/product_details_presenter.dart';
import 'package:grostore/presenters/refund_presenter.dart';
import 'package:grostore/presenters/stock_locations_presenter.dart';
import 'package:grostore/presenters/user_presenter.dart';
import 'package:grostore/presenters/wallet_presenter.dart';
import 'package:grostore/presenters/wishlist_presenter.dart';
import 'package:grostore/screens/home.dart';
import 'package:grostore/screens/landing_pages/landing_page.dart';
import 'package:grostore/screens/main.dart';
import 'package:grostore/screens/splash.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:shared_value/shared_value.dart';
import 'l10n/app_localizations.dart';
void main() {
runApp(SharedValue.wrapApp(
const MyApp(),
));
}
/// The route configuration.
final GoRouter router = GoRouter(
routes: <RouteBase>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return const Splash();
},
),
GoRoute(
path: '/landing-page',
builder: (BuildContext context, GoRouterState state) {
return const LandingPage();
},
),
],
);
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
Locale locale = const Locale("uz");
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => SettingPresenter()),
ChangeNotifierProvider(create: (context) => AuthPresenter()),
ChangeNotifierProvider(create: (context) => MainPresenter()),
ChangeNotifierProvider(create: (context) => LandingPagePresenter()),
ChangeNotifierProvider(create: (context) => CartPresenter()),
ChangeNotifierProvider(create: (context) => HomePresenter()),
ChangeNotifierProvider(create: (context) => ProductDetailsPresenter()),
ChangeNotifierProvider(create: (context) => StockLocationsPresenter()),
ChangeNotifierProvider(create: (context) => UserPresenter(),),
ChangeNotifierProvider(create: (context) => OrderPresenter()),
ChangeNotifierProvider(create: (context) => CheckOutPresenter()),
ChangeNotifierProvider(create: (context) => CategoriesPresenter()),
ChangeNotifierProvider(create: (context) => FilterPresenter()),
ChangeNotifierProvider(create: (context) => CouponPresenter()),
ChangeNotifierProvider(create: (context) => WishlistPresenter()),
ChangeNotifierProvider(create: (context) => AddressPresenter()),
ChangeNotifierProvider(create: (context) => WalletPresenter()),
ChangeNotifierProvider(create: (context) => RefundPresenter()),
ChangeNotifierProvider(create: (context) => OrderDetailsPresenter()),
],
child: Consumer<SettingPresenter>(
builder: (context, data, child) {
return BlocProvider(
create: (context) => LangBloc(),
child: BlocBuilder<LangBloc, LangState>(
builder: (context, state) {
if(state is LangSuccess){
locale = state.locale;
}
return MaterialApp(
debugShowCheckedModeBanner: false,
title: AppConfig.appName,
theme: ThemeData(
//primaryTextTheme:GoogleFonts.lobsterTextTheme() ,
primaryColor: ThemeConfig.accentMaterialColor,
primarySwatch: ThemeConfig.accentMaterialColor,
textTheme: GoogleFonts.interTextTheme().copyWith(
),
//textTheme:
),
//builder: OneContext().builder,
themeMode: ThemeMode.light,
locale: locale,
// localeResolutionCallback: (deviceLocale, supportedLocales) {
// if (AppLocalizations.delegate.isSupported(deviceLocale!)) {
// return deviceLocale;
// }
// return const Locale('uz');
// },
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: L10n.all,
// AppLang().supportedLocales(),
// home: Splash(),
initialRoute: '/',
routes: {
"/": (context) => const Splash(),
"/home": (context) =>
Home(id: getQueryParameter(context, "id"),),
"/main": (context) => const Main(),
"/landing_page": (context) => const LandingPage(),
},
);
},
),
);
}
),
);
}
}