import 'package:fcs/localization/app_translations_delegate.dart'; import 'package:fcs/localization/transalation.dart'; import 'package:fcs/pages/carton/model/carton_model.dart'; import 'package:fcs/pages/carton_size/model/carton_size_model.dart'; import 'package:fcs/pages/chat/model/message_model.dart'; import 'package:fcs/pages/contact/model/contact_model.dart'; import 'package:fcs/pages/customer/model/customer_model.dart'; import 'package:fcs/pages/delivery_address/model/delivery_address_model.dart'; import 'package:fcs/pages/discount/model/discount_model.dart'; import 'package:fcs/pages/faq/model/faq_model.dart'; import 'package:fcs/pages/fcs_shipment/model/fcs_shipment_model.dart'; import 'package:fcs/pages/main/home_page.dart'; import 'package:fcs/pages/main/initial_language_selection.dart'; import 'package:fcs/pages/invoice/model/invoice_model.dart'; import 'package:fcs/pages/market/model/market_model.dart'; import 'package:fcs/pages/main/model/language_model.dart'; import 'package:fcs/pages/main/model/main_model.dart'; import 'package:fcs/pages/package/model/package_model.dart'; import 'package:fcs/pages/payment_methods/model/payment_method_model.dart'; import 'package:fcs/pages/pickup/model/pickup_model.dart'; import 'package:fcs/pages/processing/model/processing_model.dart'; import 'package:fcs/pages/rates/model/shipment_rate_model.dart'; import 'package:fcs/pages/shipment/model/shipment_model.dart'; import 'package:fcs/pages/main/splash_page.dart'; import 'package:fcs/pages/staff/model/staff_model.dart'; import 'package:fcs/pages/term/model/term_model.dart'; import 'package:fcs/pages/main/welcome_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'pages/carton/model/carton_selection_model.dart'; import 'pages/carton/model/consignee_selection_model.dart'; import 'pages/carton/model/package_selection_model.dart'; import 'pages/carton/model/sender_selection_model.dart'; import 'pages/carton/model/shipment_selection_model.dart'; import 'pages/delivery/model/delivery_model.dart'; class App extends StatefulWidget { final String title; const App({super.key, required this.title}); @override _AppState createState() => _AppState(); } class _AppState extends State { final MainModel mainModel = new MainModel(); final ContactModel contactModel = new ContactModel(); final TermModel termModel = new TermModel(); final FAQModel faqModel = new FAQModel(); final PaymentMethodModel paymentMethodModel = new PaymentMethodModel(); final FcsShipmentModel fcsShipmentModel = new FcsShipmentModel(); final LanguageModel lanuguageModel = new LanguageModel(); final ShipmentModel shipmentModel = new ShipmentModel(); final ShipmentRateModel shipmentRateModel = new ShipmentRateModel(); final CartonModel boxModel = new CartonModel(); final MessageModel messageModel = new MessageModel(); final InvoiceModel invoiceModel = new InvoiceModel(); final CustomerModel customerModel = new CustomerModel(); final DiscountModel discountModel = new DiscountModel(); final StaffModel staffModel = new StaffModel(); final DeliveryAddressModel deliveryAddressModel = new DeliveryAddressModel(); final PackageModel packageModel = new PackageModel(); final MarketModel marketModel = new MarketModel(); final DeliveryModel deliveryModel = new DeliveryModel(); final CartonSizeModel cartonSizeModel = new CartonSizeModel(); final ProcessingModel processingModel = new ProcessingModel(); final PickupModel pickupModel = new PickupModel(); final CartonSelectionModel cartonSelectionModel = new CartonSelectionModel(); final PackageSelectionModel packageSelectionModel = new PackageSelectionModel(); final ConsigneeSelectionModel consigneeSelectionModel = new ConsigneeSelectionModel(); final SenderSelectionModel senderSelectionModel = new SenderSelectionModel(); final ShipmentSelectionModel shipmentSelectionModel = new ShipmentSelectionModel(); late AppTranslationsDelegate _newLocaleDelegate; @override void initState() { super.initState(); mainModel ..addModel(customerModel) ..addModel(staffModel) ..addModel(deliveryAddressModel) ..addModel(packageModel) ..addModel(messageModel) ..addModel(fcsShipmentModel) ..addModel(discountModel) ..addModel(shipmentRateModel) ..addModel(boxModel) ..addModel(shipmentModel) ..addModel(invoiceModel) ..addModel(marketModel) ..addModel(deliveryModel) ..addModel(cartonSizeModel) ..addModel(processingModel) ..addModel(pickupModel) ..addModel(cartonSelectionModel) ..addModel(packageSelectionModel) ..addModel(consigneeSelectionModel) ..addModel(senderSelectionModel) ..addModel(shipmentSelectionModel); _newLocaleDelegate = AppTranslationsDelegate( newLocale: Translation().supportedLocales().first); Translation().onLocaleChanged = onLocaleChange; } void onLocaleChange(Locale locale) { setState(() { _newLocaleDelegate = AppTranslationsDelegate(newLocale: locale); }); } Map route(BuildContext context) { final routes = { '/': (_) => SplashScreen(), '/welcome': (_) => WelcomePage(), '/home': (_) => HomePage(), '/language_selection': (context) => InitialLanguageSelectionPage(), }; return routes; } @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider.value(value: mainModel), ChangeNotifierProvider.value(value: staffModel), ChangeNotifierProvider.value(value: lanuguageModel), ChangeNotifierProvider.value(value: shipmentModel), ChangeNotifierProvider.value(value: shipmentRateModel), ChangeNotifierProvider.value(value: deliveryAddressModel), ChangeNotifierProvider.value(value: packageModel), ChangeNotifierProvider.value(value: boxModel), ChangeNotifierProvider.value(value: messageModel), ChangeNotifierProvider.value(value: invoiceModel), ChangeNotifierProvider.value(value: customerModel), ChangeNotifierProvider.value(value: discountModel), ChangeNotifierProvider.value(value: contactModel), ChangeNotifierProvider.value(value: termModel), ChangeNotifierProvider.value(value: faqModel), ChangeNotifierProvider.value(value: paymentMethodModel), ChangeNotifierProvider.value(value: marketModel), ChangeNotifierProvider.value(value: fcsShipmentModel), ChangeNotifierProvider.value(value: deliveryModel), ChangeNotifierProvider.value(value: cartonSizeModel), ChangeNotifierProvider.value(value: processingModel), ChangeNotifierProvider.value(value: pickupModel), ChangeNotifierProvider.value(value: cartonSelectionModel), ChangeNotifierProvider.value(value: packageSelectionModel), ChangeNotifierProvider.value(value: consigneeSelectionModel), ChangeNotifierProvider.value(value: senderSelectionModel), ChangeNotifierProvider.value(value: shipmentSelectionModel), ], child: Consumer( builder: (context, value, child) { return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( // useMaterial3: false, dividerTheme: DividerThemeData(color: Colors.grey.shade200), colorScheme: ColorScheme.light(primary: Colors.white), dialogTheme: DialogTheme( backgroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10))), ), title: widget.title, routes: route(context), localizationsDelegates: [ _newLocaleDelegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: Translation().supportedLocales()); }, )); } }