質問編集履歴
5
文章の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -135,7 +135,7 @@
|
|
135
135
|
|
136
136
|
### 試したこと
|
137
137
|
|
138
|
-
1、like_button.dartの51
|
138
|
+
1、like_button.dartの51から70行目をコメントアウトしてisLikedの状態を確認したところ、正常な挙動だったので、trycatchで問題が発生していることを特定。
|
139
139
|
|
140
140
|
2、likedUserIdsはその投稿にいいねをしたユーザーのIDを格納している変数だが、現在その投稿の投稿ユーザーのIDが格納されるようになっており、それが原因?という過程をしていますが、有識者の方々にアドバイスをいただきたいと考えています。
|
141
141
|
|
4
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -135,7 +135,7 @@
|
|
135
135
|
|
136
136
|
### 試したこと
|
137
137
|
|
138
|
-
1、like_button.dartの51~70行目をコメントアウトしてisLikedの状態を確認したところ、正常な挙動だったので、
|
138
|
+
1、like_button.dartの51~70行目をコメントアウトしてisLikedの状態を確認したところ、正常な挙動だったので、try~catchで問題が発生していることを特定。
|
139
139
|
|
140
140
|
2、likedUserIdsはその投稿にいいねをしたユーザーのIDを格納している変数だが、現在その投稿の投稿ユーザーのIDが格納されるようになっており、それが原因?という過程をしていますが、有識者の方々にアドバイスをいただきたいと考えています。
|
141
141
|
|
3
参照先の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,6 +140,7 @@
|
|
140
140
|
2、likedUserIdsはその投稿にいいねをしたユーザーのIDを格納している変数だが、現在その投稿の投稿ユーザーのIDが格納されるようになっており、それが原因?という過程をしていますが、有識者の方々にアドバイスをいただきたいと考えています。
|
141
141
|
|
142
142
|
3、有識者の方にfireStoreのfieldValueを使用すればDBの値に齟齬が出ないのでは?というアドバイスを受けて、コードを変更中です。
|
143
|
+
https://skill-upupup-future.com/?p=1114
|
143
144
|
|
144
145
|
4、常にtrueの状態に入っていることが問題なのでは?と考えているが、何をどうすれば良いかが考えつきそうで考えつかない状態です。
|
145
146
|
|
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -37,6 +37,11 @@
|
|
37
37
|
void initState() {
|
38
38
|
super.initState();
|
39
39
|
isLiked = widget.post.likedUserIds.contains(widget.post.postAccountId);
|
40
|
+
if (kDebugMode) {
|
41
|
+
print("isLiked: $isLiked");
|
42
|
+
print("widget.post.postAccountId: ${widget.post.postAccountId}");
|
43
|
+
print("widget.post.likedUserIds: ${widget.post.likedUserIds}");
|
44
|
+
}
|
40
45
|
}
|
41
46
|
|
42
47
|
void toggleLike() async {
|
@@ -66,8 +71,10 @@
|
|
66
71
|
FirebaseFirestore.instance.collection('posts').doc(widget.post.id);
|
67
72
|
|
68
73
|
final updateData = {
|
69
|
-
'liked_count':
|
74
|
+
'liked_count': FieldValue.increment(isLiked ? -1 : 1),
|
70
|
-
'liked_user_ids':
|
75
|
+
'liked_user_ids': isLiked
|
76
|
+
? FieldValue.arrayRemove([widget.post.postAccountId])
|
77
|
+
: FieldValue.arrayUnion([widget.post.postAccountId]),
|
71
78
|
};
|
72
79
|
|
73
80
|
await ref.update(updateData);
|
@@ -94,6 +101,7 @@
|
|
94
101
|
);
|
95
102
|
}
|
96
103
|
}
|
104
|
+
|
97
105
|
|
98
106
|
```
|
99
107
|
|
@@ -127,9 +135,15 @@
|
|
127
135
|
|
128
136
|
### 試したこと
|
129
137
|
|
130
|
-
1、like_button.dartの
|
138
|
+
1、like_button.dartの51~70行目をコメントアウトしてisLikedの状態を確認したところ、正常な挙動だったので、47行目から67行目で問題が発生していることを特定。
|
131
139
|
|
132
140
|
2、likedUserIdsはその投稿にいいねをしたユーザーのIDを格納している変数だが、現在その投稿の投稿ユーザーのIDが格納されるようになっており、それが原因?という過程をしていますが、有識者の方々にアドバイスをいただきたいと考えています。
|
141
|
+
|
142
|
+
3、有識者の方にfireStoreのfieldValueを使用すればDBの値に齟齬が出ないのでは?というアドバイスを受けて、コードを変更中です。
|
143
|
+
|
144
|
+
4、常にtrueの状態に入っていることが問題なのでは?と考えているが、何をどうすれば良いかが考えつきそうで考えつかない状態です。
|
145
|
+
|
146
|
+
5、30~49行目をコメントアウトして再実行すると、常にfalse状態に入ることを確認。
|
133
147
|
|
134
148
|
|
135
149
|
### 補足情報(FW/ツールのバージョンなど)
|
1
変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -53,7 +53,6 @@
|
|
53
53
|
widget.post.likedUserIds.add(widget.post.postAccountId);
|
54
54
|
widget.post.likedCount++;
|
55
55
|
}
|
56
|
-
|
57
56
|
widget.post.likedCount = widget.post.likedUserIds.length;
|
58
57
|
if (kDebugMode) {
|
59
58
|
print("updatedLikedUserIds: $updatedLikedUserIds");
|
@@ -75,12 +74,9 @@
|
|
75
74
|
if (kDebugMode) {
|
76
75
|
print("Firestore data updated successfully");
|
77
76
|
}
|
78
|
-
} catch (e) {
|
77
|
+
} on FirebaseException catch (e) {
|
79
78
|
if (kDebugMode) {
|
80
79
|
print("Firestore update error: $e");
|
81
|
-
}
|
82
|
-
if (kDebugMode) {
|
83
|
-
print("Firestore data updated successfully");
|
84
80
|
}
|
85
81
|
}
|
86
82
|
}
|