@@ -64,8 +64,10 @@ class _FamilyStepTrackerScreenState extends State<FamilyStepTrackerScreen> {
6464 ];
6565
6666 final results = await Future .wait (futures);
67- final Map <String , dynamic >? stepResult = results[0 ] as Map <String , dynamic >? ;
68- final List <Map <String , dynamic >> familyMembers = results[1 ] as List <Map <String , dynamic >>;
67+ final Map <String , dynamic >? stepResult =
68+ results[0 ] as Map <String , dynamic >? ;
69+ final List <Map <String , dynamic >> familyMembers =
70+ results[1 ] as List <Map <String , dynamic >>;
6971
7072 int parsedTotal = 0 ;
7173 final List <_MemberStep > parsedMembers = [];
@@ -88,8 +90,12 @@ class _FamilyStepTrackerScreenState extends State<FamilyStepTrackerScreen> {
8890 ? item['steps' ] as int
8991 : int .tryParse (item['steps' ]? .toString () ?? '0' ) ?? 0 ;
9092
91- // 실제 가족 구성원의 프로필 이미지 가져오기
92- final profileImagePath = await PrefsManager .getProfileImagePathByUserId (userId, familyMembers);
93+ // 더 향상된 사용자 매칭 로직
94+ String profileImagePath = await _getProfileImageForUser (
95+ userId,
96+ userName,
97+ familyMembers,
98+ );
9399
94100 parsedMembers.add (
95101 _MemberStep (
@@ -123,6 +129,62 @@ class _FamilyStepTrackerScreenState extends State<FamilyStepTrackerScreen> {
123129 }
124130 }
125131
132+ Future <String > _getProfileImageForUser (
133+ String userId,
134+ String userName,
135+ List <Map <String , dynamic >> familyMembers,
136+ ) async {
137+ try {
138+ // 1. userId로 매칭 시도 (uuid 필드와 비교)
139+ final memberByUuid = familyMembers
140+ .where ((member) => member['uuid' ]? .toString () == userId)
141+ .firstOrNull;
142+
143+ if (memberByUuid != null && memberByUuid['profileImageId' ] != null ) {
144+ return PrefsManager .getProfileImagePath (
145+ memberByUuid['profileImageId' ] as int ,
146+ );
147+ }
148+
149+ // 2. userId 필드와 직접 비교
150+ final memberByUserId = familyMembers
151+ .where ((member) => member['userId' ]? .toString () == userId)
152+ .firstOrNull;
153+
154+ if (memberByUserId != null && memberByUserId['profileImageId' ] != null ) {
155+ return PrefsManager .getProfileImagePath (
156+ memberByUserId['profileImageId' ] as int ,
157+ );
158+ }
159+
160+ // 3. userName으로 매칭 시도
161+ if (userName.isNotEmpty) {
162+ final memberByName = familyMembers
163+ .where ((member) => member['name' ]? .toString () == userName)
164+ .firstOrNull;
165+
166+ if (memberByName != null && memberByName['profileImageId' ] != null ) {
167+ return PrefsManager .getProfileImagePath (
168+ memberByName['profileImageId' ] as int ,
169+ );
170+ }
171+ }
172+
173+ final currentUserInfo = await PrefsManager .getUserInfo ();
174+ final currentUserUuid = currentUserInfo['uuid' ];
175+ final currentUserName = currentUserInfo['name' ];
176+
177+ if (userId == currentUserUuid || userName == currentUserName) {
178+ final profileImageId = currentUserInfo['profileImageId' ] ?? 0 ;
179+ return PrefsManager .getProfileImagePath (profileImageId);
180+ }
181+
182+ return PrefsManager .getProfileImagePath (0 );
183+ } catch (e) {
184+ return PrefsManager .getProfileImagePath (0 );
185+ }
186+ }
187+
126188 @override
127189 Widget build (BuildContext context) {
128190 final screenWidth = MediaQuery .of (context).size.width;
@@ -265,14 +327,14 @@ class _FamilyStepTrackerScreenState extends State<FamilyStepTrackerScreen> {
265327 text: _isLoading
266328 ? '0걸음'
267329 : _totalSteps
268- .toString ()
269- .replaceAllMapped (
270- RegExp (
271- r'(\d{1,3})(?=(\d{3})+(?!\d))' ,
272- ),
273- (m) => '${m [1 ]},' ,
274- ) +
275- '걸음' ,
330+ .toString ()
331+ .replaceAllMapped (
332+ RegExp (
333+ r'(\d{1,3})(?=(\d{3})+(?!\d))' ,
334+ ),
335+ (m) => '${m [1 ]},' ,
336+ ) +
337+ '걸음' ,
276338 style: const TextStyle (
277339 fontFamily: 'Pretendard' ,
278340 fontWeight: FontWeight .w700,
@@ -348,7 +410,7 @@ class _FamilyStepTrackerScreenState extends State<FamilyStepTrackerScreen> {
348410 steps: _memberSteps[i].steps,
349411 image: _memberSteps[i].imageAsset,
350412 isTop:
351- i == 0 && _memberSteps[i].steps > 0 ,
413+ i == 0 && _memberSteps[i].steps > 0 ,
352414 ),
353415 if (_memberSteps.isEmpty)
354416 const Padding (
@@ -449,7 +511,7 @@ Widget _buildStepMember({
449511 Text (
450512 steps.toString ().replaceAllMapped (
451513 RegExp (r'(\d{1,3})(?=(\d{3})+(?!\d))' ),
452- (m) => '${m [1 ]},' ,
514+ (m) => '${m [1 ]},' ,
453515 ),
454516 style: const TextStyle (
455517 fontFamily: 'Pretendard' ,
@@ -479,4 +541,4 @@ Widget _buildStepMember({
479541 ],
480542 ),
481543 );
482- }
544+ }
0 commit comments