rehacul_app_medical
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Env
- dev
- stg
- prod
flutterfire config \
--project=rehacul-dev \
--out=lib/firebase_options/firebase_options_dev.dart \
--ios-bundle-id=jp.co.cate.rehaculappmedical.dev \
--android-app-id=jp.co.cate.rehaculappmedical.dev
flutterfire config \
--project=rehacul-stg \
--out=lib/firebase_options/firebase_options_stg.dart \
--ios-bundle-id=jp.co.cate.rehaculappmedical.stg \
--android-app-id=jp.co.cate.rehaculappmedical.stg
flutterfire config \
--project=cardiac-rehabilitation-prd \
--out=lib/firebase_options/firebase_options_prod.dart \
--ios-bundle-id=jp.co.cate.rehaculappmedical \
--android-app-id=jp.co.cate.rehaculappmedical
cocoapods
Podのバージョンを固定する
% pod --version
1.14.3
// update
% gem update cocoapods
open api
install
brew install openapi-generator
validate
openapi-generator validate -i integrated-openapi.yml
generate
openapi-generator generate -i integrated-openapi.yml -g dart-dio -o openapi
pubspec.yaml
openapi: path: ./openapi
build
cd openapi && flutter pub run build_runner build --delete-conflicting-outputs
polar
cd polar && flutter pub get
Coding Rules
Components
Naming Rules
コンポーネントのネーミングルール
prefix: Rehacul suffix: Component
localization
TEST ルール
各項目でのテスト
- Service
- Repo
- Model
- Util (mixin)
Libraries
- stream/accelerometer_event_stream_controller
- models/sensor/accelerometer_event_with_time
- services/error/adapter_error
- services/device/android
- infra/error/api_error
- presentations/app
- app_color
- app_gradient
- infra/app_lifecycle_state_provider
- presentations/router/app_shell_route
- const/aspect_ratio_const
- gen/assets.gen
- GENERATED CODE - DO NOT MODIFY BY HAND
- services/auth_service/auth_service
- models/event/base_view_event_type
- models/heart_rate_adapter/battery_level_event
- models/value_objects/blood_pressure_model
- models/ML/body_part
- const/calc_next_exercise_mets_const
- services/rehabilitation_exercise/calc_next_exercise_mets_service
- presentations/dialogs/camera_permission_denied_dialog
- usecase/instructor_recording/cancel_instructor_recording_usecase
- services/change_date_from_datetime_service
- usecase/meal_record/change_shooting_date_usecase
- usecase/meal_record/change_shooting_time_usecase
- services/change_time_from_datetime_service
- models/disease_learning/chapter_dto
- models/disease_learning/chapters_and_completion_dto
- usecase/check_available_local_storage_usecase
- services/clock/clock_service
- usecase/meal_record/clop_image_for_preview_usecase
- services/clop_image_with_34_ratio_service
- color_schemes.g
- models/disease_learning/content_detail_dto
- services/convert_camera_image_service
- services/convert_files_to_zip_data_service
- services/convert_photo_to_multipart_file_servise
- services/rehabilitation_exercise/convert_to_evaluate_input
- converter/convert_to_exercise_data_master_model
- converter/convert_to_exercise_evaluation_model
- converter/convert_to_exercise_intensity_model
- converter/convert_to_exercise_model
- converter/convert_to_meal_analysis_task
- converter/convert_to_meal_record_model
- converter/convert_to_threshold_model
- converter/convert_to_upsert_meal_record_responce_model
- core/utils/converter
- services/rehabilitation_exercise/create_exercise_evaluation_threshold_service
- custom_color.g
- models/daily_record/daily_measurement_record_model
- repositories/daily_measurement_record/daily_measurement_record_repository
- repositories/daily_measurement_record_repository
- repositories/api_clients/daily_mesurement_record_api
- const/daily_record_const
- models/daily_record/daily_record_model
- presentations/pages/daily_record_page/daily_record_page
- presentations/pages/daily_record_page/daily_record_page_view_model
- presentations/pages/daily_record_page/daily_record_page_view_state
- presentations/router/route_data/daily_record_route
- presentations/router/shell_branch_data/daily_record_shell_branch
- presentations/pages/daily_record_summary_page/daily_record_summary_page
- presentations/pages/daily_record_summary_page/daily_record_summary_page_view_model
- presentations/pages/daily_record_summary_page/daily_record_summary_page_view_state
- models/daily_record/daily_records_model
- managers/timer/date_changed_timer_manager
- const/date_time_const
- extension/datetime_extension
- db/error/db_error
- services/handler/db_error_handler
- presentations/pages/debug/debug_page
- presentations/pages/debug/debug_polar_page
- presentations/router/route_data/debug_polar_route
- presentations/router/shell_branch_data/debug_shell_branch
- presentations/router/route_data/degug_route
- services/delete_directory_service
- db/fitness_data_master/delete_fitness_data_master_db
- db/fitness_masters/delete_fitness_masters_db
- states/meal_record/delete_meal_record_state
- usecase/meal_record/delete_meal_record_usecase
- models/device_info/device_info
- const/device_size_const
- infra/dio
- services/handler/dio_error_handler
- repositories/mixin/dio_error_handling_mixin
- infra/dio_intercepter
- presentations/pages/disease_learning_list_page/disease_learning_list_page
- presentations/pages/disease_learning_page/disease_learning_page
- presentations/pages/disease_learning_quiz_contents_page/disease_learning_quiz_contents_page
- presentations/pages/disease_learning_quiz_contents_page/disease_learning_quiz_contents_page_view_model
- presentations/pages/disease_learning_quiz_contents_page/disease_learning_quiz_contents_page_view_state
- repositories/disease_learning_repository
- presentations/router/route_data/disease_learning_route
- presentations/router/shell_branch_data/disease_learning_shell_branch
- presentations/pages/disease_learning_text_contents_page/disease_learning_text_contents_page
- presentations/pages/disease_learning_video_contents_page/disease_learning_video_contents_page
- presentations/pages/disease_learning_video_contents_page/disease_learning_video_contents_page_view_model
- presentations/pages/disease_learning_video_contents_page/disease_learning_video_contents_page_view_state
- presentations/pages/video_call_list_page/dummy_data
- extension/duration_extension
- models/heart_rate_adapter/ecg_data
- usecase/rehabilitation/end_rehabilitation_usecase
- presentations/error_handler
- models/ML/evaluate_pose
- services/rehabilitation_exercise/evaluate_pose_service
- const/evaluation_model_const
- models/exercise/exercise_and_threshold_model
- repositories/api_clients/exercise_api
- models/exercise/exercise_data_master_model
- repositories/exercise_data_master_repository
- models/exercise/exercise_data_version_model
- repositories/local_database/exercise_data_version_repository
- models/exercise/exercise_evaluation_model
- repositories/local_database/exercise_evaluation_repository
- models/exercise/exercise_intensity_model
- models/exercise/exercise_model
- repositories/local_database/exercise_repository
- services/rehabilitation_exercise/exercise_selection_service
- models/exercise/exsercise_type
- presentations/dialogs/external_storage_permission_denaied_dialog
- services/push_notification/fcm_token_stream_provider
- repositories/api_clients/file_api
- repositories/file_repository
- services/file/file_service
- firebase_options/firebase_configuration
- services/push_notification/firebase_messaging_service
- firebase_options
- firebase_options/firebase_options_dev
- firebase_options/firebase_options_prod
- firebase_options/firebase_options_stg
- repositories/fitness_master/fitness_data_master_local_repository
- models/fitness_master/fitness_data_master_model
- repositories/fitness_master/fitness_data_repository
- repositories/fitness_master/fitness_masters_local_repository
- models/fitness_master/fitness_masters_model
- presentations/pages/fixed_color_license_page
- flavor_properties
- models/meal_record/food_item_model
- models/value_objects/form_type
- presentations/dialogs/full_screen_image_dialog
- presentations/components/full_screen_loading_indicator
- models/file/gen_pre_signed_url_request_item_model
- models/file/gen_pre_signed_url_request_model
- models/file/gen_pre_signed_url_response_item_model
- models/file/gen_pre_signed_url_response_model
- services/get_current_user_email_service
- services/daily_measurement/get_daily_measurement_record
- services/daily_measurement/get_daily_measurement_record_summary
- usecase/daily_measurement_record/get_daily_measurement_record_summary_usecase
- usecase/daily_measurement_record/get_daily_measurement_record_usecase
- services/device/get_device_info_service
- services/disease_learning/get_disease_learning_chapter
- repositories/disease_learning/get_disease_learning_chapter_repository
- services/disease_learning/get_disease_learning_content
- repositories/disease_learning/get_disease_learning_content_repository
- services/disease_learning/get_disease_learning_quiz_result
- repositories/disease_learning/get_disease_learning_quiz_result_repository
- usecase/rehabilitation/get_exercise_and_threshold_models_from_exercise_intensity_usecase
- db/fitness_data_master/get_fitness_data_master_db
- usecase/fitness_master/get_fitness_data_usecase
- db/fitness_masters/get_fitness_masters_db
- db/fitness_masters/get_fitness_masters_from_fitness_id_db
- db/fitness_masters/get_fitness_masters_from_mets_db
- usecase/meal_record/get_meal_analysis_task_usecase
- usecase/meal_record/get_meal_photo_shooting_date_usecase
- usecase/meal_record/get_meal_record_usecase
- usecase/meal_record/get_meal_records_usecase
- usecase/message/get_messages_usecase
- usecase/rehabilitation/get_self_check_items_usecase
- usecase/rehabilitation/get_selfcheck_result_usecase
- services/get_shooting_date_service
- stream/gyroscope_event_stream_controller
- models/heart_rate_adapter/hear_rate_data
- models/value_objects/heart_late_device_type
- adapters/heart_rate_adapter/heart_rate_adapter
- services/error/heart_rate_adapter_error
- models/heart_rate_adapter/heart_rate_adapter_state
- models/heart_rate_adapter/heart_rate_device_disconnected_event
- models/heart_rate_adapter/heart_rate_device_event
- stream/heart_rate_device_event_stream_controller
- models/heart_rate_adapter/heart_rate_device_info
- models/heart_rate_adapter/heart_rate_device_type
- presentations/pages/home_page/home_meal_record
- presentations/pages/home_page/home_page
- presentations/router/route_data/home_route
- presentations/router/shell_branch_data/home_shell_branch
- presentations/pages/rehabilitation_exercise_page/image_stream_preview_widget
- models/ML/inference_model
- models/ML/inference_result
- db/fitness_data_master/insert_fitness_data_master_db
- db/fitness_masters/insert_fitness_masters_db
- presentations/router/route_data/instructor_recoding_route
- models/instructor_recording/instructor_record
- models/instructor_recording/instructor_recording
- presentations/dialogs/instructor_recording_error_dialog
- presentations/pages/instructor_recording_page/instructor_recording_page
- states/instructor_recording/instructor_recording_state
- presentations/dialogs/instructor_recording_succeeded_dialog
- models/meal_record/intake_nutrient
- services/rehabilitation_exercise/interpreter_wrapper
- models/ML/isolate_inference_argument
- services/rehabilitation_exercise/isolate_inference_service
- models/ML/key_point
- l10n/l10n
- models/disease_learning/learining_content_type
- repositories/api_clients/learning_api
- models/disease_learning/learning_content_dto
- models/disease_learning/learning_contents_dto
- const/learning_status
- presentations/pages/lesson_movie_page/lesson_movie_page
- presentations/router/route_data/lesson_movie_route
- presentations/router/route_data/license_route
- presentations/components/listener_widget
- helper/local_database_helper
- services/local_storage_service
- services/logger_capture_service
- main
- services/error/manager_error
- models/meal_record/meal_analysis_task
- repositories/meal_analysis_task_repository
- states/meal_record/meal_analysis_task_state
- states/meal_record/meal_photo_datetime_state
- presentations/bottom_sheets/meal_photo_source_selection_bottom_sheet
- states/meal_record/meal_photo_state
- repositories/api_clients/meal_record_api
- presentations/pages/meal_record_detail_page/meal_record_detail_page
- presentations/router/route_data/meal_record_detail_route
- models/meal_record/meal_record_model
- const/meal_record_nutrient_type
- presentations/pages/meal_record_page/meal_record_page
- presentations/pages/meal_record_photo_pick_page/meal_record_photo_pick_page
- presentations/router/route_data/meal_record_photo_pick_route
- presentations/pages/meal_record_photo_preview_page/meal_record_photo_preview_page
- presentations/router/route_data/meal_record_photo_preview_route
- repositories/meal_record_repository
- presentations/router/route_data/meal_record_route
- states/meal_record/meal_record_state
- models/meal_record/meal_records_model
- states/meal_record/meal_records_state
- models/rehabilitation/measurement_timing_model
- domains/rehabilitation/medical_consultation
- repositories/api_clients/medical_institute_api
- repositories/api_clients/medical_institution_api
- repositories/api_clients/medical_staff_api
- models/message/message_model
- presentations/pages/message_page
- repositories/message/message_repository
- presentations/router/route_data/message_route
- presentations/router/shell_branch_data/message_shell_branch
- models/message/messages_model
- states/message/messages_state
- models/exercise/mets_selection_result_model
- repositories/util/model_convert_manager
- const/movie_recording_const
- presentations/pages/my_page
- presentations/router/route_data/my_route
- presentations/router/shell_branch_data/my_shell_route_branch
- services/handler/native_handler
- repositories/api_clients/notification_api
- models/file/notification_finish_upload_request_item_model
- models/file/notification_finish_upload_request_model
- services/handler/notification_handler
- presentations/dialogs/notification_permission_denied_dialog
- repositories/notification_repository
- services/notification/notification_service
- models/meal_record/nutrient_model
- db/fitness_data_master/open_fitness_data_master_db
- db/fitness_masters/open_fitness_masters_db
- services/handler/permission_handler
- models/ML/person
- presentations/dialogs/photo_permission_denied_dialog
- adapters/heart_rate_adapter/polar_adapter
- services/rehabilitation_exercise/pose_estimation_service
- models/rehabilitation/pre
- presentations/dialogs/pre_select_dialog
- models/rehabilitation/prescription
- models/disease_learning/quiz_content_dto
- models/disease_learning/quiz_option_dto
- models/disease_learning/quiz_options_dto
- presentations/pages/instructor_recording_page/recording_preview_widget
- usecase/rehabilitation/register_heart_rate_and_blood_pressure_usecase
- states/meal_record/register_meal_record_state
- usecase/meal_record/register_meal_record_usecase
- usecase/rehabilitation/register_self_check_answer_usecase
- usecase/rehabilitation/register_selfcheck_usecase
- states/rehabilitation/rehabilitaion_id_state
- models/rehabilitation/rehabilitation
- repositories/api_clients/rehabilitation_api
- presentations/pages/rehabilitation_camera_setting_page_tablet
- presentations/router/route_data/rehabilitation_camera_setting_page_tablet_route
- const/rehabilitation_const
- presentations/router/route_data/rehabilitation_cool_down_exercise_page_tablet_route
- presentations/pages/rehabilitation_cool_down_exercise_start_page_tablet
- presentations/router/route_data/rehabilitation_cool_down_exercise_start_page_tablet_route
- presentations/pages/rehabilitation_device_setting_page_tablet
- presentations/router/route_data/rehabilitation_device_setting_page_tablet_route
- presentations/pages/rehabilitation_end_page_tablet
- presentations/router/route_data/rehabilitation_end_page_tablet_route
- models/event/rehabilitation_event
- presentations/pages/rehabilitation_exercise_page/rehabilitation_exercise_page
- presentations/pages/rehabilitation_exercise_page_tablet
- presentations/router/route_data/rehabilitation_exercise_page_tablet_route
- presentations/router/route_data/rehabilitation_exercise_route
- presentations/pages/rehabilitation_exercise_start_page_tablet
- presentations/router/route_data/rehabilitation_exercise_start_page_tablet_route
- presentations/pages/rehabilitation_heart_rate_device_connecting_page_tablet
- presentations/router/route_data/rehabilitation_heart_rate_device_connecting_page_tablet_route
- presentations/pages/rehabilitation_heart_rate_device_wearing_page_tablet
- presentations/router/route_data/rehabilitation_heart_rate_device_wearing_page_tablet_route
- presentations/pages/rehabilitation_measurement_page_tablet
- presentations/router/route_data/rehabilitation_measurement_page_tablet_after_route
- presentations/router/route_data/rehabilitation_measurement_page_tablet_before_route
- presentations/dialogs/rehabilitation_pause_dialog
- repositories/rehabilitation_repository
- presentations/components/rehabilitation_rest_widget
- presentations/pages/rehabilitation_self_check_page_tablet
- presentations/router/route_data/rehabilitation_self_check_page_tablet_route
- domains/rehabilitation/rehabilitation_self_checklist
- presentations/pages/rehabilitation_start_page_tablet
- presentations/router/route_data/rehabilitation_start_page_tablet_route
- states/rehabilitation/rehabilitation_state
- states/rehabilitation/rehabilitation_step_state
- presentations/pages/rehabilitation_volume_check_page_tablet
- presentations/router/route_data/rehabilitation_volume_check_page_tablet_route
- presentations/pages/rehabilitation_warm_up_and_cool_down_exercise_page_tablet
- presentations/router/route_data/rehabilitation_warm_up_exercise_page_tablet_route
- presentations/components/rehacul_bar_chart
- presentations/components/rehacul_bottom_container
- presentations/components/rehacul_card
- presentations/components/rehacul_check_box
- presentations/components/rehacul_check_icon
- presentations/components/rehacul_date_picker
- presentations/components/rehacul_dialog
- presentations/components/rehacul_divider
- presentations/components/rehacul_donut_chart
- presentations/components/rehacul_dot_divider
- presentations/components/rehacul_error_wiget
- presentations/components/rehacul_loading_dialog
- presentations/components/rehacul_meal_photo_image
- presentations/components/rehacul_meal_record_food_item_list
- presentations/components/rehacul_meal_record_intake_widget
- presentations/components/rehacul_modal_bottom_sheet
- presentations/components/rehacul_modal_bottom_sheet_option_text
- presentations/components/rehacul_movie_player_widget
- presentations/components/rehacul_responsive_widget
- presentations/components/rehacul_rouded_divider
- presentations/components/rehacul_snack_bar
- presentations/components/rehacul_step_counter
- presentations/components/rehacul_stepper_widget
- presentations/components/rehacul_surface_card
- presentations/components/rehacul_surface_color_container
- presentations/components/rehacul_text_field
- presentations/components/rehacul_text_input_widget
- presentations/components/rehacul_time_picker
- presentations/components/rehacul_video_call_control_bar
- presentations/components/rehacul_video_call_list
- presentations/components/rehacul_video_card
- presentations/components/rehacul_video_participant_widget
- repositories/api_clients/remote_instruction_api
- services/rename_file_service
- repositories/error/repository_error
- services/handler/repository_error_handler
- presentations/router/router
- presentations/routes
- presentations/router/routes
- services/save_csv_to_local_storage_service
- services/save_file_service
- usecase/instructor_recording/save_sensor_usecase
- services/save_zip_file_to_local_service
- models/exercise/section_type
- models/rehabilitation/self_check_model
- managers/sensor_manager/sensor_manager
- services/error/service_error
- models/rehabilitation/set_section_index
- presentations/pages/setting_page/setting_page
- presentations/router/route_data/setting_route
- presentations/pages/splash_page
- services/handler/sqflite_error_handler
- usecase/instructor_recording/start_instructor_recording_usecase
- usecase/rehabilitation/start_rehabilitation_usecase
- services/handler/state_error_handler
- models/event/state_event
- stream/state_event_stream_controller
- usecase/instructor_recording/stop_instructor_recording_usecase
- presentations/router/route_data/summary_route
- presentations/router/shell_branch_data/summary_shell_branch
- repositories/api_clients/take_form_items_api
- repositories/take_form_items_repository
- repositories/api_clients/task_api
- const/task_status
- models/test/test_database_exception
- presentations/styles/text_styles
- models/exercise/threshold_model
- models/event/timer_event
- stream/timer_event_stream_controller
- managers/timer/timer_manager
- managers/timer/timer_manager_state
- repositories/rehabilitation_exercise_debug/upload_inference_debug_data_repository
- services/rehabilitation_exercise/upload_inference_debug_data_service
- services/daily_measurement/upsert_daily_measurement_record
- usecase/daily_measurement_record/upsert_daily_measurement_record_usecase
- services/disease_learning/upsert_disease_learning_history
- repositories/disease_learning/upsert_disease_learning_history_repository
- usecase/exercise_data_master/upsert_exercise_data_master_local_db_usecase
- usecase/notification/upsert_fcm_token_usecase
- models/meal_record/upsert_meal_record_responce_model
- core/utils/use_camera_controller
- core/utils/use_chewie_controller
- services/error/usecase_error
- services/handler/usecase_error_handler
- presentations/router/route_data/video_call_detail_route
- presentations/pages/video_call_list_page/video_call_list_page
- presentations/pages/video_call_page/video_call_page
- presentations/pages/video_call_room_page/video_call_room_page
- presentations/router/route_data/video_call_room_route
- presentations/router/route_data/video_call_route
- const/video_call_status
- models/event/view_event
- stream/view_event_stream_controller
- models/event/view_event_type
- presentations/pages/web_view_page
- presentations/router/route_data/web_view_route
- utils/weight_text_input_fortmatter