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_navigation_bar
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
presentations/pages/bottom_navigation_page
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_multi_select_button
presentations/components/rehacul_primary_button
presentations/components/rehacul_primary_icon_button
presentations/components/rehacul_primary_rounded_rectangle_button
presentations/components/rehacul_responsive_widget
presentations/components/rehacul_rouded_divider
presentations/components/rehacul_secondary_button
presentations/components/rehacul_secondary_rounded_rectangle_button
presentations/components/rehacul_secondary_stadium_button
presentations/components/rehacul_single_select_button
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
presentations/components/rehacul_video_text_button
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