화면 하단 여백 · 로그아웃 진행 · 스낵바 강조색 · TODAY'S QUEST 관리자 퀘스트 3개

This commit is contained in:
Sn-Kinos
2026-10-06 02:29:09 +09:00
parent 82662b9b9f
commit 64825e72b0
17 changed files with 104 additions and 67 deletions
+2 -1
View File
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import '../../core/i18n/app_locale.dart';
import '../../core/theme/tokens.dart';
import '../auth/auth.dart';
import '../../core/ui/bottom_inset.dart';
/// SNS 연동 — 화면 대조 원장 F6.
///
@@ -50,7 +51,7 @@ class _AccountLinkScreenState extends State<AccountLinkScreen> {
return Scaffold(
appBar: AppBar(title: Text(context.l10n.linkTitle(_name))),
body: ListView(
padding: const EdgeInsets.all(AppSpace.s4),
padding: withBottomInset(context, const EdgeInsets.all(AppSpace.s4)),
children: [
Container(
padding: const EdgeInsets.all(AppSpace.s4),
+2 -1
View File
@@ -4,6 +4,7 @@ import '../../core/i18n/app_locale.dart';
import '../../core/theme/tokens.dart';
import 'my_data.dart';
import 'widgets/my_cards.dart';
import '../../core/ui/bottom_inset.dart';
/// 「2026.04.30」 — 시안 공지 날짜 표기.
String _date(DateTime at) =>
@@ -116,7 +117,7 @@ class NoticeDetailScreen extends StatelessWidget {
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: Text(context.l10n.noticeDetailTitle)),
body: ListView(
padding: const EdgeInsets.all(16),
padding: withBottomInset(context, const EdgeInsets.all(16)),
children: [
_NoticeHead(notice: notice),
const SizedBox(height: 12),
+2 -1
View File
@@ -5,6 +5,7 @@ import 'my_data.dart';
import 'photo_picker.dart';
import 'widgets/my_cards.dart';
import '../../core/i18n/app_locale.dart';
import '../../core/ui/bottom_inset.dart';
/// 닉네임 수정 — 화면 대조 원장 F6 · 시안 `374:16029`(MY 연필에서 진입).
///
@@ -68,7 +69,7 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
onDone: _changed && !_saving ? _save : null,
),
body: ListView(
padding: const EdgeInsets.all(16),
padding: withBottomInset(context, const EdgeInsets.all(16)),
children: [
// 시안 — 카드 #19191c · 모서리 16 · 높이 58 · 글자 18/500.
Container(
+9 -2
View File
@@ -19,6 +19,7 @@ import 'pop_history_screen.dart';
import 'push_settings_screen.dart';
import 'support_screens.dart';
import 'widgets/my_cards.dart';
import '../../core/ui/bottom_inset.dart';
/// 설정 — 화면 대조 원장 F6 · Figma `354:222008`.
///
@@ -93,7 +94,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
return Scaffold(
appBar: AppBar(title: Text(l10n.settingsTitle)),
body: ListView(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 0),
padding: withBottomInset(context, const EdgeInsets.fromLTRB(16, 16, 16, 0)),
children: [
MyGroup(
title: l10n.settingsAccount,
@@ -220,8 +221,14 @@ class _SettingsScreenState extends State<SettingsScreen> {
action: l10n.settingsLogout,
// 푸시 정리를 **먼저** 한다. 보안 규칙이 `users/{uid}` 쓰기를
// `isSelf(uid)` 로 막아, 로그아웃 뒤에는 이 기기 토큰을 지울 수 없다.
// 정리가 실패해도(토픽 해제 · 토큰 쓰기 네트워크 오류) 로그아웃은 한다 — 예외가
// 그대로 올라가면 signOut 이 돌지 않아 첫 탭이 무시된 것처럼 보인다(10/6 실기기 1회).
onConfirm: () async {
await widget.push?.clearOnSignOut();
try {
await widget.push?.clearOnSignOut();
} on Object catch (error) {
debugPrint('[Settings] push cleanup failed: ${error.runtimeType}');
}
await widget.auth?.signOut();
},
),
+3 -2
View File
@@ -5,6 +5,7 @@ import '../../core/ui/relative_time.dart';
import 'my_data.dart';
import 'widgets/my_cards.dart';
import '../../core/i18n/app_locale.dart';
import '../../core/ui/bottom_inset.dart';
/// 1:1 문의 목록 — 화면 대조 원장 F6 · Figma `373:634916` 「1:1 문의 접수」.
///
@@ -205,7 +206,7 @@ class InquiryDetailScreen extends StatelessWidget {
],
),
body: ListView(
padding: const EdgeInsets.all(AppSpace.s4),
padding: withBottomInset(context, const EdgeInsets.all(AppSpace.s4)),
children: [
Text(inquiry.title, style: t.titleMedium),
const SizedBox(height: AppSpace.s2),
@@ -296,7 +297,7 @@ class _InquiryComposeScreenState extends State<InquiryComposeScreen> {
],
),
body: ListView(
padding: const EdgeInsets.all(AppSpace.s4),
padding: withBottomInset(context, const EdgeInsets.all(AppSpace.s4)),
children: [
TextField(
controller: _title,
+3 -2
View File
@@ -8,6 +8,7 @@ import '../planet/planet_history_screen.dart';
import 'my_data.dart';
import 'widgets/my_cards.dart';
import '../../core/i18n/app_locale.dart';
import '../../core/ui/bottom_inset.dart';
/// 티어 정보 — 화면 대조 원장 F6 · Figma `373:633256`.
///
@@ -61,7 +62,7 @@ class TierInfoScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(title: Text(context.l10n.tierInfoTitle)),
body: ListView(
padding: const EdgeInsets.fromLTRB(20, 20, 20, 0),
padding: withBottomInset(context, const EdgeInsets.fromLTRB(20, 20, 20, 0)),
children: [
Text.rich(
TextSpan(
@@ -142,7 +143,7 @@ class TierDetailScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(title: const Text('TIER')),
body: ListView(
padding: const EdgeInsets.all(16),
padding: withBottomInset(context, const EdgeInsets.all(16)),
children: [
for (final (i, planet) in list.indexed) ...[
if (i > 0) const SizedBox(height: 16),