142 lines
6.5 KiB
Dart
142 lines
6.5 KiB
Dart
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();
|
|
}
|
|
}
|