간편 로그인 · 성운/행성 생성을 아래에서 올라오는 전환으로
This commit is contained in:
@@ -213,17 +213,3 @@ Future<void> showAlertDialog(
|
||||
confirmLabel: confirmLabel ?? context.l10n.commonConfirm,
|
||||
),
|
||||
);
|
||||
|
||||
/// 아래에서 올라오고 닫으면 아래로 내려가는 전체 화면 — Figma 설명 「닫기 버튼 클릭 시, 하단
|
||||
/// move out 페이지 종료」(`516:87382` 성운 생성 · `516:87457` 행성 생성 · `516:88164` 이클립스 상세).
|
||||
/// 안드로이드 기본 전환(확대)과 iOS 기본 전환(옆으로)이 모두 이 동작이 아니라 따로 둔다.
|
||||
Route<T> slideUpRoute<T>(WidgetBuilder builder) => PageRouteBuilder<T>(
|
||||
pageBuilder: (context, _, _) => builder(context),
|
||||
transitionsBuilder: (_, animation, _, child) => SlideTransition(
|
||||
position: Tween(
|
||||
begin: const Offset(0, 1),
|
||||
end: Offset.zero,
|
||||
).chain(CurveTween(curve: Curves.easeOutCubic)).animate(animation),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -2,7 +2,8 @@ import 'package:flutter/material.dart';
|
||||
|
||||
/// 아래에서 올라와 아래로 닫히는 전체 화면 — Figma 설명 프레임의 「닫기 버튼 클릭 시, 하단 move out
|
||||
/// 페이지 종료 후 이전 화면 이동」(퀘스트 생성 `523:18123` · 위치 선택 `523:18207` · 신고하기 `548:21389`
|
||||
/// · 이클립스 상세 `516:88158`).
|
||||
/// · 이클립스 상세 `516:88158` · 성운 생성 `516:87382` · 행성 생성 `516:87457` · 간편 로그인 `510:86374`).
|
||||
/// 이 전환은 앱에서 이 클래스 하나로만 만든다.
|
||||
///
|
||||
/// `MaterialPageRoute(fullscreenDialog: true)` 는 iOS 에서만 아래로 내려간다(Android 는 기본 전환).
|
||||
/// 두 플랫폼 모두 같은 방향으로 움직이게 전환만 바꾼다.
|
||||
|
||||
@@ -6,6 +6,7 @@ import '../../core/firebase/firebase_boot.dart';
|
||||
import '../../core/i18n/app_locale.dart';
|
||||
import '../../core/theme/tokens.dart';
|
||||
import '../../core/ui/app_icons.dart';
|
||||
import '../../core/ui/sheet_route.dart';
|
||||
import 'auth.dart';
|
||||
import 'auth_repository.dart';
|
||||
import 'signup_screens.dart';
|
||||
@@ -101,9 +102,9 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
|
||||
void _open({required bool signUp}) {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute<void>(
|
||||
// 명세 `510:86374` 「닫기 — 아래 방향 Move Out 으로 이전 화면」 — 아래에서 올라오는 전체 화면.
|
||||
fullscreenDialog: true,
|
||||
// 명세 `510:86374` 「닫기 — 아래 방향 Move Out 으로 이전 화면」 — 아래에서 올라오는 전체 화면.
|
||||
// fullscreenDialog 만으로는 Android 에서 페이드 · 확대로 열렸다(10/6 실기기 E-5).
|
||||
SheetRoute<void>(
|
||||
builder: (_) => SimpleLoginScreen(auth: widget.auth, signUp: signUp),
|
||||
),
|
||||
);
|
||||
@@ -248,8 +249,7 @@ class _SimpleLoginScreenState extends State<SimpleLoginScreen> {
|
||||
|
||||
void _switchMode() {
|
||||
Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute<void>(
|
||||
fullscreenDialog: true,
|
||||
SheetRoute<void>(
|
||||
builder: (_) =>
|
||||
SimpleLoginScreen(auth: widget.auth, signUp: !widget.signUp),
|
||||
),
|
||||
|
||||
@@ -5,6 +5,7 @@ import '../../core/i18n/app_locale.dart';
|
||||
import '../../core/push/push_messaging.dart';
|
||||
import '../../core/theme/tokens.dart';
|
||||
import '../../core/ui/app_icons.dart';
|
||||
import '../../core/ui/sheet_route.dart';
|
||||
import '../home/coach_mark.dart';
|
||||
import '../home/home_data.dart';
|
||||
import '../home/nebula_create_screen.dart';
|
||||
@@ -259,7 +260,7 @@ class _OnboardingFlowState extends State<OnboardingFlow> {
|
||||
}),
|
||||
onCreateNebula: () async {
|
||||
final created = await Navigator.of(context).push<String>(
|
||||
MaterialPageRoute(
|
||||
SheetRoute(
|
||||
builder: (_) => NebulaCreateScreen(repository: widget.home),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -17,6 +17,7 @@ import '../../core/data/backend.dart' show BackendException;
|
||||
import '../home/nebula_create_screen.dart';
|
||||
import '../planet/planet_detail_screen.dart';
|
||||
import '../../core/i18n/app_locale.dart';
|
||||
import '../../core/ui/sheet_route.dart';
|
||||
|
||||
/// GALAXY 탭 루트 — 시안 `354:220228` Galaxy.
|
||||
///
|
||||
@@ -116,7 +117,7 @@ class _GalaxyHomeScreenState extends State<GalaxyHomeScreen> {
|
||||
}
|
||||
final myPop = snapshot.myPop;
|
||||
final fandomId = await navigator.push(
|
||||
MaterialPageRoute<String>(
|
||||
SheetRoute<String>(
|
||||
builder: (_) =>
|
||||
NebulaCreateScreen(repository: widget.home, myPop: myPop),
|
||||
),
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../core/ui/sheet_route.dart';
|
||||
|
||||
import 'home_data.dart';
|
||||
import 'home_screen.dart' show HomeHeader;
|
||||
import 'planet_create_screen.dart';
|
||||
@@ -65,7 +67,7 @@ class GrowthCompleteScreen extends StatelessWidget {
|
||||
growth: growth,
|
||||
fandomId: nebulaName,
|
||||
onBirth: () => Navigator.of(context).push(
|
||||
MaterialPageRoute<void>(
|
||||
SheetRoute<void>(
|
||||
builder: (_) => PlanetCreateScreen(nebulaName: nebulaName),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -16,7 +16,7 @@ import 'package:go_router/go_router.dart';
|
||||
import '../../core/format.dart';
|
||||
import '../../core/i18n/app_locale.dart';
|
||||
import '../../core/theme/tokens.dart';
|
||||
import '../../core/ui/app_dialog.dart' show slideUpRoute;
|
||||
import '../../core/ui/sheet_route.dart';
|
||||
import '../../core/ui/app_icons.dart';
|
||||
import '../../core/data/planet_visual_state.dart';
|
||||
import '../../core/ui/live_stream.dart';
|
||||
@@ -168,7 +168,7 @@ class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
|
||||
final created = await Navigator.of(
|
||||
context,
|
||||
rootNavigator: true,
|
||||
).push(slideUpRoute<String>((_) => screen));
|
||||
).push(SheetRoute<String>(builder: (_) => screen));
|
||||
if (created == null || !mounted) return;
|
||||
if (widget.galaxyRepository case final repository?) {
|
||||
setState(() {
|
||||
|
||||
Reference in New Issue
Block a user