fix(mobile): edge-to-edge로 전환해 헤더/푸터 안전영역 정렬

- main: SystemUiMode.edgeToEdge + 내비게이션바 투명 → WebView가 시스템바 뒤까지
  전체 화면 차지 → 웹의 env(safe-area-inset-*) (viewport-fit=cover)가 실제값 수신
- webview: SafeArea top·bottom 모두 false (셸은 inset을 잡지 않고 웹 CSS가 처리)
  → 헤더 눌림/푸터 과다 여백 해소

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49 2026-06-30 16:26:58 +09:00
parent e14eafd6b2
commit e6c7ba9552
3 changed files with 38 additions and 2 deletions

View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "332409988740",
"project_id": "special-partners-internal",
"storage_bucket": "special-partners-internal.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:332409988740:android:33ded5b63cb6c1644ac4d1",
"android_client_info": {
"package_name": "com.specialpartners.spin"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAzrtq093lZQacN9sDLpDyPrSSqDZMbQHc"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -8,11 +8,17 @@ const navy = Color(0xFF03143F);
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
// : navy ( ). // Edge-to-edge: WebView가 .
// env(safe-area-inset-*) (viewport-fit=cover) /
// / .
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
// : + . ( ).
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent, statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.light, statusBarIconBrightness: Brightness.light,
statusBarBrightness: Brightness.dark, statusBarBrightness: Brightness.dark,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.dark,
)); ));
await PushService.instance.init(); // Firebase await PushService.instance.init(); // Firebase
runApp(const SpinApp()); runApp(const SpinApp());

View File

@ -147,7 +147,8 @@ class _WebViewScreenState extends State<WebViewScreen> with WidgetsBindingObserv
child: Scaffold( child: Scaffold(
backgroundColor: _navy, backgroundColor: _navy,
body: SafeArea( body: SafeArea(
top: false, // safe-area CSS가 top: false, // · safe-area CSS(env) inset을
bottom: false,
child: Stack( child: Stack(
children: [ children: [
InAppWebView( InAppWebView(