import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'core/build_config.dart'; import 'core/design/theme.dart'; import 'core/di.dart'; import 'core/l10n/l10n.dart'; import 'core/router.dart'; import 'core/tenant/tenant_cubit.dart'; import 'features/settings/cubit/settings_cubit.dart'; import 'features/settings/cubit/settings_state.dart'; class TripzApp extends StatelessWidget { const TripzApp({super.key}); @override Widget build(BuildContext context) { return MultiBlocProvider( providers: [ BlocProvider.value(value: sl()), // إعداد المستأجر فوق الشجرة: كل شاشة تسأله عن ميزاتها بلا تمرير. BlocProvider.value(value: sl()), ], child: BlocBuilder( builder: (context, settings) { return MaterialApp.router( title: BuildConfig.appName, debugShowCheckedModeBanner: false, routerConfig: appRouter, // الثيم يُبنى من مدخلين لا ثالث لهما (docs/26 §4). theme: buildTheme(Brightness.light, settings.locale), darkTheme: buildTheme(Brightness.dark, settings.locale), themeMode: settings.themeMode, // الاتجاه يتبع اللغة آلياً — لا `Directionality` مفروضة فوق كل // شيء، وإلا انكسرت الإنجليزية (docs/26 §4). locale: settings.locale, supportedLocales: L10n.supportedLocales, localizationsDelegates: const [ ...L10n.localizationsDelegates, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], // سقف تكبير النص 1.3 — وهو ما تُفحص عليه الشاشات (docs/26 §9). // ما فوقه يكسر التخطيط بلا مكسب قرائي. builder: (context, child) => MediaQuery.withClampedTextScaling( maxScaleFactor: 1.3, child: child ?? const SizedBox.shrink(), ), ); }, ), ); } }