>_ rehablogger
Система работает
← Все сессии
СЕССИЯ УСТРОЙСТВА

rehabapp_2026-09-22_15-25-59

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.234847Z","request_id":"a33e9fc1-74b2-453b-8635-30d24a20b0c7","version":"v1"},"data":{"message":"User push token successfully saved or existed for current user"}}
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/general
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.226749Z","request_id":"a6b4daff-ce0d-466e-a272-c891789b5c20","version":"v1"},"data":{"rehabilitation_name":"Проверка упражнений","rehabilitation_start_date":"2026-09-21","rehabilitation_end_date":"2026-10-18","rehabilitation_weeks_count":4,"quality":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Проверка упражнений","weeks":[{"phase_week_number":1,"score":null,"rehabilitation_week_number":1,"is_control_week":false},{"phase_week_number":2,"score":null,"rehabilitation_week_number":2,"is_control_week":false},{"phase_week_number":3,"score":null,"rehabilitation_week_number":3,"is_control_week":false},{"phase_week_number":4,"score":null,"rehabilitation_week_number":4,"is_control_week":true}]}]},"activity":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Проверка упражнений","weeks":[{"phase_week_number":1,"score":null,"rehabilitation_week_number":1,"is_control_week":false},{"phase_week_number":2,"score":null,"rehabilitation_week_number":2,"is_control_week":false},{"phase_week_number":3,"score":null,"rehabilitation_week_number":3,"is_control_week":false},{"phase_week_number":4,"score":null,"rehabilitation_week_number":4,"is_control_week":true}]}]}}}
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/period?start_date=2026-08-31&end_date=2026-10-04
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.226694Z","request_id":"b146ccdd-b246-4de2-97e8-57ef2b5d8287","version":"v1"},"data":{"start_rehab":"2026-09-21 00:00:00","end_rehab":"2026-10-18 00:00:00","days":[{"date":"2026-09-21","status":["start"],"training":[{"mode":"correction_unit","status":"not_done","progress":null},{"mode":"diagnostics","status":"not_done","progress":null}]},{"date":"2026-09-22","status":["none"],"training":[{"mode":"correction_unit","status":"completed","progress":null}]},{"date":"2026-09-23","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-24","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-25","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-28","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null},{"mode":"diagnostics","status":"not_done","progress":null}]},{"date":"2026-09-29","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-30","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-10-01","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-10-02","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.234847Z, request_id: a33e9fc1-74b2-453b-8635-30d24a20b0c7, version: v1}, data: {message: User push token successfully saved or existed for current user}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.226749Z, request_id: a6b4daff-ce0d-466e-a272-c891789b5c20, version: v1}, data: {rehabilitation_name: Проверка упражнений, rehabilitation_start_date: 2026-09-21, rehabilitation_end_date: 2026-10-18, rehabilitation_weeks_count: 4, quality: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Проверка упражнений, weeks: [{phase_week_number: 1, score: null, rehabilitation_week_number: 1, is_control_week: false}, {phase_week_number: 2, score: null, rehabilitation_week_number: 2, is_control_week: false}, {phase_week_number: 3, score: null, rehabilitation_week_number: 3, is_control_week: false}, {phase_week_number: 4, score: null, rehabilitation_week_number: 4, is_control_week: true}]}]}, activity: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Проверка упражнений, weeks: [{phase_week_number: 1, score: null, rehabilitation_week_number: 1, is_control_week: false}, {phase_week_number: 2
INFO [console] , score: null, rehabilitation_week_number: 2, is_control_week: false}, {phase_week_number: 3, score: null, rehabilitation_week_number: 3, is_control_week: false}, {phase_week_number: 4, score: null, rehabilitation_week_number: 4, is_control_week: true}]}]}}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.226694Z, request_id: b146ccdd-b246-4de2-97e8-57ef2b5d8287, version: v1}, data: {start_rehab: 2026-09-21 00:00:00, end_rehab: 2026-10-18 00:00:00, days: [{date: 2026-09-21, status: [start], training: [{mode: correction_unit, status: not_done, progress: null}, {mode: diagnostics, status: not_done, progress: null}]}, {date: 2026-09-22, status: [none], training: [{mode: correction_unit, status: completed, progress: null}]}, {date: 2026-09-23, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-24, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-25, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-28, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}, {mode: diagnostics, status: not_done, progress: null}]}, {date: 2026-09-29, stat
INFO [console] us: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-30, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-10-01, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-10-02, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}]}}
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/user/save-client-push-token/
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.273332Z","request_id":"3c6c3230-b7f8-41a8-b523-ae80a2b09173","version":"v1"},"data":{"message":"User push token successfully saved or existed for current user"}}
INFO [console] [DIO]
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/range-of-motion
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 768|0VqB9oq4rJLHonOPuJFUBc4D6YaW5mqDHk9mLj7Cb772150c
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.273332Z, request_id: 3c6c3230-b7f8-41a8-b523-ae80a2b09173, version: v1}, data: {message: User push token successfully saved or existed for current user}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-22
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 768|0VqB9oq4rJLHonOPuJFUBc4D6YaW5mqDHk9mLj7Cb772150c
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/range-of-motion
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.554040Z","request_id":"47bf5cf6-2e20-4c88-87c4-7a4524fe208b","version":"v1"},"data":{"average_score":null,"average_interpretation":null,"phases":[{"phase_sequence_number":1,"phase_name":"Проверка упражнений","weeks":[{"phase_week_number":1,"week_number":1,"rehabilitation_week_number":1,"score":null,"interpretation":null,"is_control_week":false},{"phase_week_number":2,"week_number":2,"rehabilitation_week_number":2,"score":null,"interpretation":null,"is_control_week":false},{"phase_week_number":3,"week_number":3,"rehabilitation_week_number":3,"score":null,"interpretation":null,"is_control_week":false},{"phase_week_number":4,"week_number":4,"rehabilitation_week_number":4,"score":null,"interpretation":null,"is_control_week":true}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.554040Z, request_id: 47bf5cf6-2e20-4c88-87c4-7a4524fe208b, version: v1}, data: {average_score: null, average_interpretation: null, phases: [{phase_sequence_number: 1, phase_name: Проверка упражнений, weeks: [{phase_week_number: 1, week_number: 1, rehabilitation_week_number: 1, score: null, interpretation: null, is_control_week: false}, {phase_week_number: 2, week_number: 2, rehabilitation_week_number: 2, score: null, interpretation: null, is_control_week: false}, {phase_week_number: 3, week_number: 3, rehabilitation_week_number: 3, score: null, interpretation: null, is_control_week: false}, {phase_week_number: 4, week_number: 4, rehabilitation_week_number: 4, score: null, interpretation: null, is_control_week: true}]}]}}
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-22
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.574948Z","request_id":"edc8ceb9-fcb3-4e90-8f1f-64f38aafde52","version":"v1"},"data":{"rehabilitation_day_id":3118,"phase_id":363,"diagnosis_rehab":"Проверка упражнений","start_rehab":"2026-09-21 00:00:00","end_rehab":"2026-10-18 00:00:00","name_rehab_phase":"Проверка упражнений","status":["none"],"recommendations_count":1,"date":"2026-09-22","training":[{"mode":"correction_unit","status":"completed","progress":null,"unit_id":1089,"time":"10 - 20 мин","count_questions":2,"status_questions":false,"workout_id":139}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.574948Z, request_id: edc8ceb9-fcb3-4e90-8f1f-64f38aafde52, version: v1}, data: {rehabilitation_day_id: 3118, phase_id: 363, diagnosis_rehab: Проверка упражнений, start_rehab: 2026-09-21 00:00:00, end_rehab: 2026-10-18 00:00:00, name_rehab_phase: Проверка упражнений, status: [none], recommendations_count: 1, date: 2026-09-22, training: [{mode: correction_unit, status: completed, progress: null, unit_id: 1089, time: 10 - 20 мин, count_questions: 2, status_questions: false, workout_id: 139}]}}
ERROR [widgets library] Null check operator used on a null value
Null check operator used on a null value
#0      _TrainingDayItemState.build (package:testapp/features/calendar_page/presentation/widgets/day_details/training_day_item.dart:56:43)
#1      StatefulElement.build (package:flutter/src/widgets/framework.dart:5931:27)
#2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5817:15)
#3      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#4      Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#5      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#6      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#7      ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#8      Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#9      Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#10     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#12     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#13     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#14     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#15     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#16     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#17     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#18     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#19     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#20     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#21     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#22     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#23     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#25     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#26     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#27     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#28     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#29     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#31     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#33     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#34     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#35     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#36     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#37     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#38     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#39     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#40     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#41     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#42     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#43     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#44     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#45     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#46     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#47     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#48     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#49     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#50     SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1086:37)
#51     SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1071:20)
#52     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3101:19)
#53     SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1061:12)
#54     RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:368:23)
#55     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:3026:17)
#56     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1223:15)
#57     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:3025:14)
#58     RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:357:5)
#59     RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:517:5)
#60     RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:238:19)
#61     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:278:12)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2907:7)
#63     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:821:13)
#64     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1831:12)
#65     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1724:20)
#66     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2755:7)
#67     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1174:18)
#68     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1187:15)
#69     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:643:23)
#70     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1573:13)
#71     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:509:5)
#72     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)
#73     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)
#74     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)
#75     _rootRun (dart:async/zone_root.dart:35:13)
#76     _CustomZone.run (dart:async/zone.dart:726:19)
#77     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#78     _invoke (dart:ui/hooks.dart:425:10)
#79     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:447:5)
#80     _drawFrame (dart:ui/hooks.dart:395:31)
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/pain
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 768|0VqB9oq4rJLHonOPuJFUBc4D6YaW5mqDHk9mLj7Cb772150c
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/pain
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.708805Z","request_id":"99a5714f-09d4-44d7-a5af-1703c7737c9a","version":"v1"},"data":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Проверка упражнений","weeks":[{"week_number":1,"rehabilitation_week_number":1,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":false},{"week_number":2,"rehabilitation_week_number":2,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":false},{"week_number":3,"rehabilitation_week_number":3,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":false},{"week_number":4,"rehabilitation_week_number":4,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":true}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.708805Z, request_id: 99a5714f-09d4-44d7-a5af-1703c7737c9a, version: v1}, data: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Проверка упражнений, weeks: [{week_number: 1, rehabilitation_week_number: 1, score: null, change_from_previous: null, change_direction: null, is_control_week: false}, {week_number: 2, rehabilitation_week_number: 2, score: null, change_from_previous: null, change_direction: null, is_control_week: false}, {week_number: 3, rehabilitation_week_number: 3, score: null, change_from_previous: null, change_direction: null, is_control_week: false}, {week_number: 4, rehabilitation_week_number: 4, score: null, change_from_previous: null, change_direction: null, is_control_week: true}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/exercises/list
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:02.782819Z, request_id: 6657838c-89c0-4c3f-82d7-e57e5fc333a4, version: v1}, data: []}
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 768|0VqB9oq4rJLHonOPuJFUBc4D6YaW5mqDHk9mLj7Cb772150c
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/exercises/list
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:02 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:02.782819Z","request_id":"6657838c-89c0-4c3f-82d7-e57e5fc333a4","version":"v1"},"data":[]}
INFO [console] [DIO]
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-22
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 768|0VqB9oq4rJLHonOPuJFUBc4D6YaW5mqDHk9mLj7Cb772150c
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-22
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 22 Sep 2026 12:26:05 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-22T12:26:05.337773Z","request_id":"e3e37b44-a7c0-45b2-a189-afb1a5f45cdf","version":"v1"},"data":{"rehabilitation_day_id":3118,"phase_id":363,"diagnosis_rehab":"Проверка упражнений","start_rehab":"2026-09-21 00:00:00","end_rehab":"2026-10-18 00:00:00","name_rehab_phase":"Проверка упражнений","status":["none"],"recommendations_count":1,"date":"2026-09-22","training":[{"mode":"correction_unit","status":"completed","progress":null,"unit_id":1089,"time":"10 - 20 мин","count_questions":2,"status_questions":false,"workout_id":139}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-22T12:26:05.337773Z, request_id: e3e37b44-a7c0-45b2-a189-afb1a5f45cdf, version: v1}, data: {rehabilitation_day_id: 3118, phase_id: 363, diagnosis_rehab: Проверка упражнений, start_rehab: 2026-09-21 00:00:00, end_rehab: 2026-10-18 00:00:00, name_rehab_phase: Проверка упражнений, status: [none], recommendations_count: 1, date: 2026-09-22, training: [{mode: correction_unit, status: completed, progress: null, unit_id: 1089, time: 10 - 20 мин, count_questions: 2, status_questions: false, workout_id: 139}]}}
ERROR [widgets library] Null check operator used on a null value
Null check operator used on a null value
#0      _TrainingDayItemState.build (package:testapp/features/calendar_page/presentation/widgets/day_details/training_day_item.dart:56:43)
#1      StatefulElement.build (package:flutter/src/widgets/framework.dart:5931:27)
#2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5817:15)
#3      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#4      Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#5      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#6      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#7      ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#8      Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#9      Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#10     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#12     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#13     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#14     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#15     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#16     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#17     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#18     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#19     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#20     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#21     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#22     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#23     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#25     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#26     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#27     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#28     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#29     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#31     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#33     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#34     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#35     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#36     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#37     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#38     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#39     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#40     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#41     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#42     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#43     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#44     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#45     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#46     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#47     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#48     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#49     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#50     SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1086:37)
#51     SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1071:20)
#52     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3101:19)
#53     SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1061:12)
#54     RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:368:23)
#55     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:3026:17)
#56     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1223:15)
#57     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:3025:14)
#58     RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:357:5)
#59     RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:517:5)
#60     RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:238:19)
#61     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:278:12)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2907:7)
#63     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:821:13)
#64     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1831:12)
#65     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1724:20)
#66     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2755:7)
#67     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1174:18)
#68     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1187:15)
#69     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:643:23)
#70     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1573:13)
#71     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:509:5)
#72     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)
#73     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)
#74     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)
#75     _rootRun (dart:async/zone_root.dart:35:13)
#76     _CustomZone.run (dart:async/zone.dart:726:19)
#77     _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#78     _invoke (dart:ui/hooks.dart:425:10)
#79     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:447:5)
#80     _drawFrame (dart:ui/hooks.dart:395:31)
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-29
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
$
250 строкUTF-8LIVE