0% found this document useful (0 votes)
15 views3 pages

Mainflutter

The document is a Flutter application setup that initializes a responsive app with multi-provider support for theme and language management. It configures responsive breakpoints and sets up localization for multiple languages. The main widget, AcnooApp, builds a MaterialApp with dynamic theme and locale settings based on user preferences.

Uploaded by

Dastagiri Saheb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views3 pages

Mainflutter

The document is a Flutter application setup that initializes a responsive app with multi-provider support for theme and language management. It configures responsive breakpoints and sets up localization for multiple languages. The main widget, AcnooApp, builds a MaterialApp with dynamic theme and locale settings based on user preferences.

Uploaded by

Dastagiri Saheb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

// 🐦 Flutter imports:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

// 📦 Package imports:
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:responsive_framework/responsive_framework.dart' as rf;
import 'package:responsive_grid/responsive_grid.dart';
import 'package:url_strategy/url_strategy.dart';

// 🌎 Project imports:
import 'app/core/app_config/app_config.dart';
import 'app/core/static/static.dart';
import 'app/core/theme/theme.dart';
import 'app/providers/providers.dart';
import 'app/routes/app_routes.dart';
import 'generated/l10n.dart';

Future<void> main() async {


setPathUrlStrategy();
WidgetsFlutterBinding.ensureInitialized();
ResponsiveGridBreakpoints.value = ResponsiveGridBreakpoints(
sm: 576,
md: 1240,
lg: double.infinity,
);

final _app = MultiProvider(


providers: [
ChangeNotifierProvider(create: (_) => AppThemeProvider()),
ChangeNotifierProvider(create: (_) => AppLanguageProvider()),
ChangeNotifierProvider(create: (_) => ECommerceMockProductsNotifier()),
],
child: const AcnooApp(),
);
runApp(_app);
}

class AcnooApp extends StatelessWidget {


const AcnooApp({super.key});

@override
Widget build(BuildContext context) {
return Consumer2<AppThemeProvider, AppLanguageProvider>(
builder: (context, appTheme, appLang, child) {
return rf.ResponsiveBreakpoints.builder(
breakpoints: [
rf.Breakpoint(
start: BreakpointName.XS.start,
end: BreakpointName.XS.end,
name: BreakpointName.XS.name,
),
rf.Breakpoint(
start: BreakpointName.SM.start,
end: BreakpointName.SM.end,
name: BreakpointName.SM.name,
),
rf.Breakpoint(
start: BreakpointName.MD.start,
end: BreakpointName.MD.end,
name: BreakpointName.MD.name,
),
rf.Breakpoint(
start: BreakpointName.LG.start,
end: BreakpointName.LG.end,
name: BreakpointName.LG.name,
),
rf.Breakpoint(
start: BreakpointName.XL.start,
end: BreakpointName.XL.end,
name: BreakpointName.XL.name,
),
],
child: MaterialApp.router(
title: AppConfig.appName,
theme: AcnooAppTheme.kLightTheme(),
darkTheme: AcnooAppTheme.kDarkTheme(),
themeMode: appTheme.themeMode,

builder: (context, child) => MediaQuery(


data: MediaQuery.of(context).copyWith(
textScaler: TextScaler.linear(rf.ResponsiveValue<double>(
context,
conditionalValues: [],
defaultValue: 1.0,
).value),
),
child: Directionality(
textDirection: appLang.isRTL
? TextDirection.rtl
: Directionality.of(context),
child: Stack(
children: [
Positioned.fill(child: child!),
if (kDebugMode)
Positioned(
top: 0,
right: 0,
child: Material(
child: Text("${MediaQuery.sizeOf(context)}"),
),
),
],
),
),
),

// Language & Locale


locale: appLang.currentLocale,
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
// Navigation Configuration
routerConfig: AcnooAppRoutes.routerConfig,
debugShowCheckedModeBanner: false,
),
);
},
);
}
}

You might also like