APP_NEW/lib/main.dart

142 lines
6.5 KiB
Dart
Raw Normal View History

2025-03-11 21:17:14 +08:00
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<LanguageProvider, Locale?>((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<ImageAndLogoProvider>(context);
final _constitution_provider = Provider.of<ConstitutionProvider>(context);
final _zong_fu_organ_provider = Provider.of<ZongFuOrganProvider>(context);
final _posture_issue_provider = Provider.of<PostureIssueProvider>(context);
final _symptom_provider = Provider.of<SymptomProvider>(context);
final _urban_disease_provider = Provider.of<UrbanDiseaseProvider>(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();
}
}