import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:lamiter/Component/loading.dart'; import 'package:lamiter/Page/login_page.dart'; import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/zong_fu_organ_provider.dart'; import 'package:lamiter/Provider/Diagnosis/diagnosis_provider.dart'; import 'package:lamiter/Provider/Form/constitution_form_provider.dart'; import 'package:lamiter/Provider/Form/create_edit_client_form_provider.dart'; import 'package:lamiter/Provider/Form/health_index_form_provider.dart'; import 'package:lamiter/Provider/Form/physical_index_form_provider.dart'; import 'package:lamiter/Provider/Form/posture_issue_form_provider.dart'; import 'package:lamiter/Provider/Form/sleep_well_index_form_provider.dart'; import 'package:lamiter/Provider/Form/stress_index_form_provider.dart'; import 'package:lamiter/Provider/Form/urban_disease_form_provider.dart'; import 'package:lamiter/Provider/Form/zong_fu_index_form_provider.dart'; import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/constitution_provider.dart'; import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/urban_disease_provider.dart'; import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/posture_issue_provider.dart'; import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/symptom_provider.dart'; import 'package:lamiter/Provider/Language/language_provider.dart'; import 'package:lamiter/Provider/Service/MedicalFacility/medical_facility_provider.dart'; import 'package:lamiter/Provider/Service/course_provider.dart'; import 'package:lamiter/Provider/Service/treatment_provider.dart'; import 'package:lamiter/Provider/User/Client/client_calendar_provider.dart'; import 'package:lamiter/Provider/User/Client/client_provider.dart'; import 'package:lamiter/Provider/Service/SeasonalRacipe/constitution_seasonal_recipe_provider.dart'; import 'package:lamiter/Provider/image_and_logo_provider.dart'; import 'package:lamiter/Provider/login_provider.dart'; import 'package:lamiter/Provider/User/manager_provider.dart'; import 'package:lamiter/Provider/Service/product_provider.dart'; import 'package:lamiter/Theme/light_mode.dart'; import 'package:lamiter/l10n/l10n.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; void main() async { runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => LanguageProvider()), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { ScreenUtil.init(context); final locale = context .select((provider) => provider.locale); return MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => ImageAndLogoProvider()), ChangeNotifierProvider(create: (context) => LoginProvider()), ChangeNotifierProvider(create: (context) => ManagerProvider()), ChangeNotifierProvider(create: (context) => ClientProvider()), ChangeNotifierProvider(create: (context) => ClientCalendarProvider()), ChangeNotifierProvider(create: (context) => UrbanDiseaseProvider()), ChangeNotifierProvider(create: (context) => ConstitutionProvider()), ChangeNotifierProvider(create: (context) => ZongFuOrganProvider()), ChangeNotifierProvider(create: (context) => PostureIssueProvider()), ChangeNotifierProvider(create: (context) => SymptomProvider()), ChangeNotifierProvider( create: (context) => CreateEditClientFormProvider()), ChangeNotifierProvider(create: (context) => DiagnosisProvider()), ChangeNotifierProvider(create: (context) => HealthIndexFormProvider()), ChangeNotifierProvider( create: (context) => PhysicalIndexFormProvider()), ChangeNotifierProvider(create: (context) => UrbanDiseaseFormProvider()), ChangeNotifierProvider(create: (context) => StressIndexFormProvider()), ChangeNotifierProvider( create: (context) => SleepWellIndexFormProvider()), ChangeNotifierProvider(create: (context) => ConstitutionFormProvider()), ChangeNotifierProvider(create: (context) => ZongFuIndexFormProvider()), ChangeNotifierProvider(create: (context) => PostureIssueFormProvider()), ChangeNotifierProvider(create: (context) => ProductProvider()), ChangeNotifierProvider(create: (context) => TreatmentProvider()), ChangeNotifierProvider(create: (context) => CourseProvider()), ChangeNotifierProvider(create: (context) => MedicalFacilityProvider()), ChangeNotifierProvider( create: (context) => ConstitutionSeasonalRecipeProvider()) ], child: MaterialApp( title: 'Lamiter', supportedLocales: L10n.locales, locale: locale, theme: lightTheme, debugShowCheckedModeBanner: false, localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], routes: { '/': (context) => _LoadingScreen(), }, ), ); } } class _LoadingScreen extends StatelessWidget { @override Widget build(BuildContext context) { final _image_and_logo_provider = Provider.of(context); final _constitution_provider = Provider.of(context); final _zong_fu_organ_provider = Provider.of(context); final _posture_issue_provider = Provider.of(context); final _symptom_provider = Provider.of(context); final _urban_disease_provider = Provider.of(context); // 如果 provider 還沒載入,顯示 Loading 畫面 if (_constitution_provider.elements.isEmpty || _zong_fu_organ_provider.elements.isEmpty || _posture_issue_provider.elements.isEmpty || _urban_disease_provider.elements.isEmpty || _symptom_provider.elements.isEmpty || _image_and_logo_provider.image == null || _image_and_logo_provider.logo == null) { return const Scaffold(body: Loading()); } // 當 provider 有資料後,進入主頁 return _MainScreen(); } } class _MainScreen extends StatelessWidget { @override Widget build(BuildContext context) { return const LoginPage(); } }