0% found this document useful (0 votes)
7 views

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
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

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
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