알림함 항목 생성 · 알림 이동 · 브리핑 항목 승인·상세 · 푸시 토픽을 가입 팬덤 전체로
This commit is contained in:
+39
-19
@@ -12,6 +12,9 @@ import 'core/push/push_messaging.dart';
|
||||
import 'core/router/app_router.dart';
|
||||
import 'core/theme/app_theme.dart';
|
||||
import 'features/auth/auth_repository.dart';
|
||||
import 'features/campaign/campaign_detail_screen.dart';
|
||||
import 'features/notification/notification_screen.dart';
|
||||
import 'features/quest/quest_detail_screen.dart';
|
||||
import 'features/translation/translation_comments.dart';
|
||||
|
||||
/// MaterialApp + 라우터 + 테마 주입.
|
||||
@@ -202,6 +205,20 @@ class _FancakeAppState extends State<FancakeApp> with WidgetsBindingObserver {
|
||||
|
||||
void _openFromPush(PushNotice notice) => _router.go(notice.route);
|
||||
|
||||
/// 알림함 항목 → 화면(명세 `518:88353`). INSIDE · 라운지 게시물 이동은 그 알림을 만드는
|
||||
/// 3차 범위와 함께 붙는다 — 지금은 경로를 모르는 것으로 두어 이동하지 않는다.
|
||||
Widget? _notificationScreen(String path) => switch (path.split('/')) {
|
||||
['quests', final id] when id.isNotEmpty => QuestDetailScreen(
|
||||
questId: id,
|
||||
repository: _repos.quest,
|
||||
),
|
||||
['campaigns', final id] when id.isNotEmpty => CampaignDetailScreen(
|
||||
campaignId: id,
|
||||
repository: _repos.campaign,
|
||||
),
|
||||
_ => null,
|
||||
};
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => ListenableBuilder(
|
||||
listenable: _locale,
|
||||
@@ -210,25 +227,28 @@ class _FancakeAppState extends State<FancakeApp> with WidgetsBindingObserver {
|
||||
// 캠페인 상세 · 라운지 글 상세처럼 여러 경로로 열리는 화면이 번역 저장소를 찾는 곳.
|
||||
child: TranslationScope(
|
||||
repository: _repos.translation,
|
||||
child: MaterialApp.router(
|
||||
title: 'FANUZU',
|
||||
builder: (context, child) =>
|
||||
AdaptivePlanetEffects(child: child ?? const SizedBox()),
|
||||
debugShowCheckedModeBanner: false,
|
||||
scaffoldMessengerKey: _messengerKey,
|
||||
locale: _locale.locale,
|
||||
supportedLocales: appLocales,
|
||||
localizationsDelegates: [
|
||||
RemoteL10nDelegate(_locale.remote),
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: buildAppTheme(),
|
||||
// 코스믹 다크가 유일한 서피스다(결정 D-19). 라이트 테마를 두지 않는다.
|
||||
themeMode: ThemeMode.dark,
|
||||
darkTheme: buildAppTheme(),
|
||||
routerConfig: _router,
|
||||
child: NotificationTargets(
|
||||
screenFor: _notificationScreen,
|
||||
child: MaterialApp.router(
|
||||
title: 'FANUZU',
|
||||
builder: (context, child) =>
|
||||
AdaptivePlanetEffects(child: child ?? const SizedBox()),
|
||||
debugShowCheckedModeBanner: false,
|
||||
scaffoldMessengerKey: _messengerKey,
|
||||
locale: _locale.locale,
|
||||
supportedLocales: appLocales,
|
||||
localizationsDelegates: [
|
||||
RemoteL10nDelegate(_locale.remote),
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: buildAppTheme(),
|
||||
// 코스믹 다크가 유일한 서피스다(결정 D-19). 라이트 테마를 두지 않는다.
|
||||
themeMode: ThemeMode.dark,
|
||||
darkTheme: buildAppTheme(),
|
||||
routerConfig: _router,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user