main.dart 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // ignore_for_file: unused_field
  2. import 'package:animated_splash_screen/animated_splash_screen.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_localizations/flutter_localizations.dart';
  5. import 'package:gozap_package/components/DB/db.dart';
  6. import 'package:gozap_package/components/common.dart';
  7. import 'package:gozap_package/components/localization/app_translations_delegate.dart';
  8. import 'package:gozap_package/components/localization/application.dart';
  9. import 'package:gozap_package/components/themes/themes.dart';
  10. import 'package:gozap_package/controllers/extentions/trycatch.dart';
  11. import 'package:gozap_package/gozap_package.dart';
  12. import 'package:gozap_package/models/common.dart';
  13. import 'package:gozap_package/models/user/user_model.dart';
  14. import 'package:gozap_package/views/log_in/log_in_view.dart';
  15. import 'package:provider/provider.dart';
  16. import 'package:toast/toast.dart';
  17. import 'views/dashboard/dashboard_view.dart';
  18. void main() {
  19. runApp(MultiProvider(providers: [
  20. ChangeNotifierProvider(create: (_) => LocalDB()),
  21. ChangeNotifierProvider(create: (_) => userChangeNotifier()),
  22. ChangeNotifierProvider(create: (_) => commonChangeNotifier()),
  23. ], child: const MyApp()));
  24. }
  25. class MyApp extends StatefulWidget {
  26. const MyApp({super.key});
  27. @override
  28. State<MyApp> createState() => _MyAppState();
  29. }
  30. class _MyAppState extends State<MyApp> {
  31. late AppTranslationsDelegate _newLocaleDelegate;
  32. UserModule? user;
  33. @override
  34. void initState() {
  35. _newLocaleDelegate = const AppTranslationsDelegate(newLocale: null);
  36. application.onLocaleChanged = onLocaleChange;
  37. super.initState();
  38. checkUser.callAndAbsorbError();
  39. }
  40. checkUser() async {
  41. await Provider.of<userChangeNotifier>(context, listen: false).get(context);
  42. setState(() {
  43. user = Provider.of<userChangeNotifier>(context, listen: false).user;
  44. });
  45. // ignore: use_build_context_synchronously
  46. Provider.of<commonChangeNotifier>(context,listen: false).set(context, "https://api.gofuel.in/");
  47. }
  48. void onLocaleChange(Locale locale) {
  49. setState(() {
  50. _newLocaleDelegate = AppTranslationsDelegate(newLocale: locale);
  51. });
  52. }
  53. // This widget is the root of your application.
  54. @override
  55. Widget build(BuildContext context) {
  56. ToastContext().init(context);
  57. return MaterialApp(
  58. debugShowCheckedModeBanner: false,
  59. title: 'GoZAP Rider',
  60. theme: ThemeData(
  61. fontFamily: 'Eras',
  62. primarySwatch: buildMaterialColor(AppTheme.primaryColor)
  63. ),
  64. localizationsDelegates: const [
  65. AppTranslationsDelegate(),
  66. //provides localised strings
  67. GlobalMaterialLocalizations.delegate,
  68. //provides RTL support
  69. GlobalWidgetsLocalizations.delegate,
  70. ],
  71. supportedLocales: application.supportedLocales(),
  72. home: AnimatedSplashScreen(
  73. duration: 3000,
  74. splashIconSize: 300.0,
  75. splash: Container(
  76. child: Common.goFuelLogoWidget(context),
  77. ),
  78. nextScreen: user != null
  79. ? const DashboardView()
  80. : LogInView(
  81. nextScreen: const DashboardView(),
  82. ),
  83. backgroundColor: AppTheme.secondaryColor,
  84. splashTransition: SplashTransition.fadeTransition,
  85. ),
  86. );
  87. }
  88. }