UX·FX v1.5 — 햅틱 단계 · 라이브 띠 · HERO 전광판 · Push 우선순위 · Shield · 이클립스 성공·실패 연출
This commit is contained in:
@@ -22,6 +22,7 @@ import 'widgets/campaign_list_card.dart' show CampaignAuthor;
|
||||
import 'widgets/campaign_rank.dart';
|
||||
import 'widgets/campaign_share_dialog.dart';
|
||||
import 'widgets/campaign_style.dart';
|
||||
import '../../core/ui/fx_intensity.dart';
|
||||
|
||||
/// 캠페인 상세 — 화면 대조 원장 F5 · Figma `272:245738`.
|
||||
///
|
||||
@@ -998,6 +999,7 @@ class _CampaignDetailScreenState extends State<CampaignDetailScreen> {
|
||||
return;
|
||||
}
|
||||
if (!mounted) return;
|
||||
final before = _raised;
|
||||
setState(() {
|
||||
_spent += applied;
|
||||
_raised += applied;
|
||||
@@ -1010,6 +1012,8 @@ class _CampaignDetailScreenState extends State<CampaignDetailScreen> {
|
||||
_detail = fresh;
|
||||
_raised = fresh.card.raisedPop;
|
||||
});
|
||||
// v1.5 §1 Legendary 「Campaign 100%」 — 서버가 다시 준 모금액으로 이번 후원이 목표를 넘긴 때만 1회.
|
||||
if (campaignJustCompleted(before, fresh.card.raisedPop, fresh.card.goalPop)) fxHaptic(FxIntensity.legendary);
|
||||
}
|
||||
} on Object catch (_) {
|
||||
// 다시 읽기 실패는 후원 결과와 무관하다 — 앞 화면을 그대로 둔다.
|
||||
@@ -1301,3 +1305,7 @@ class _Round extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// 이번 후원 전 모금액 [before] 가 목표 [goal] 미만이었고 서버 확정 모금액 [raised] 가 목표에 닿았는가.
|
||||
bool campaignJustCompleted(int before, int raised, int goal) =>
|
||||
goal > 0 && before < goal && raised >= goal;
|
||||
|
||||
Reference in New Issue
Block a user