49 lines
1.5 KiB
Dart
49 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../../core/ui/tab_placeholder.dart';
|
|
import '../auth/auth_repository.dart';
|
|
|
|
/// MY 탭 루트 — S-M-HOME 마이 페이지.
|
|
///
|
|
/// 화면 구현 전이라도 로그아웃은 여기서 할 수 있어야 한다 — 다른 계정 · 다른 로그인
|
|
/// 방법으로 다시 들어가 볼 길이 없으면 소셜 로그인 4종을 한 기기에서 확인할 수 없다.
|
|
/// 로그아웃하면 인증 상태가 바뀌고 라우터가 로그인 화면으로 보낸다.
|
|
class MyScreen extends StatelessWidget {
|
|
const MyScreen({super.key, required this.auth});
|
|
|
|
final AuthRepository auth;
|
|
|
|
Future<void> _logout(BuildContext context) async {
|
|
final ok = await showDialog<bool>(
|
|
context: context,
|
|
builder: (context) => AlertDialog(
|
|
content: const Text('로그아웃 하시겠습니까?'),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () => Navigator.of(context).pop(false),
|
|
child: const Text('취소'),
|
|
),
|
|
FilledButton(
|
|
onPressed: () => Navigator.of(context).pop(true),
|
|
child: const Text('로그아웃'),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
if (ok == true) await auth.signOut();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) => TabPlaceholder(
|
|
tab: 'MY',
|
|
screenId: 'S-M-HOME',
|
|
screenName: '마이 페이지',
|
|
footer: Builder(
|
|
builder: (context) => OutlinedButton(
|
|
onPressed: () => _logout(context),
|
|
child: const Text('로그아웃'),
|
|
),
|
|
),
|
|
);
|
|
}
|