1
0
forked from baron/baron-sso

input 레이아웃 , 한글 번역 수정

This commit is contained in:
2026-01-19 11:16:01 +09:00
parent b65ecc1b24
commit ebfd60f81a

View File

@@ -432,7 +432,12 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Center( body: LayoutBuilder(
builder: (context, constraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraints.maxHeight),
child: Center(
child: Container( child: Container(
constraints: const BoxConstraints(maxWidth: 400), constraints: const BoxConstraints(maxWidth: 400),
padding: const EdgeInsets.all(24), padding: const EdgeInsets.all(24),
@@ -453,9 +458,9 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
TabBar( TabBar(
controller: _tabController, controller: _tabController,
tabs: const [ tabs: const [
Tab(text: "Email"), Tab(text: "이메일"),
Tab(text: "Phone (SMS)"), Tab(text: "전화번호"),
Tab(text: "QR"), Tab(text: "QR 코드"),
], ],
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
@@ -466,12 +471,14 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
controller: _tabController, controller: _tabController,
children: [ children: [
// Email Form // Email Form
Column( Padding(
padding: const EdgeInsets.only(top: 16.0),
child: Column(
children: [ children: [
TextField( TextField(
controller: _emailController, controller: _emailController,
decoration: const InputDecoration( decoration: const InputDecoration(
labelText: "Email", labelText: "이메일",
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.email_outlined), prefixIcon: Icon(Icons.email_outlined),
), ),
@@ -481,7 +488,7 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
controller: _passwordController, controller: _passwordController,
obscureText: true, obscureText: true,
decoration: const InputDecoration( decoration: const InputDecoration(
labelText: "Password (Optional)", labelText: "비밀번호 (선택)",
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.lock_outline), prefixIcon: Icon(Icons.lock_outline),
), ),
@@ -492,18 +499,21 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
style: FilledButton.styleFrom( style: FilledButton.styleFrom(
minimumSize: const Size.fromHeight(50), minimumSize: const Size.fromHeight(50),
), ),
child: const Text("Sign In / Send Link"), child: const Text("로그인 / 링크 전송"),
), ),
], ],
), ),
),
// Phone Form // Phone Form
Column( Padding(
padding: const EdgeInsets.only(top: 16.0),
child: Column(
children: [ children: [
TextField( TextField(
controller: _phoneController, controller: _phoneController,
decoration: const InputDecoration( decoration: const InputDecoration(
labelText: "Phone Number", labelText: "휴대폰 번호",
hintText: "010-1234-5678", hintText: "010-1234-5678",
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.phone_android), prefixIcon: Icon(Icons.phone_android),
@@ -515,16 +525,17 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
style: FilledButton.styleFrom( style: FilledButton.styleFrom(
minimumSize: const Size.fromHeight(50), minimumSize: const Size.fromHeight(50),
), ),
child: const Text("Send Login Link"), child: const Text("로그인 링크 전송"),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
const Text( const Text(
"We will send a login link to your phone via SMS.", "입력하신 번호로 로그인 링크를 문자로 보내드립니다.",
style: TextStyle(color: Colors.grey, fontSize: 12), style: TextStyle(color: Colors.grey, fontSize: 12),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
], ],
), ),
),
// QR Login View // QR Login View
Column( Column(
@@ -550,8 +561,8 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
const SizedBox(height: 12), const SizedBox(height: 12),
Text( Text(
_qrRemainingSeconds > 0 _qrRemainingSeconds > 0
? "Remaining Time: ${_formatTime(_qrRemainingSeconds)}" ? "남은 시간: ${_formatTime(_qrRemainingSeconds)}"
: "QR Code Expired", : "QR 코드 만료됨",
style: TextStyle( style: TextStyle(
color: _qrRemainingSeconds > 30 ? Colors.blue : Colors.red, color: _qrRemainingSeconds > 30 ? Colors.blue : Colors.red,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@@ -559,17 +570,17 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
const Text( const Text(
"Scan with your mobile app", "모바일 앱으로 스캔하세요",
style: TextStyle(color: Colors.grey, fontSize: 12), style: TextStyle(color: Colors.grey, fontSize: 12),
), ),
TextButton( TextButton(
onPressed: _startQrFlow, onPressed: _startQrFlow,
child: const Text("Refresh QR") child: const Text("QR 코드 새로고침")
), ),
], ],
) )
else else
const Text("Failed to load QR code."), const Text("QR 코드를 불러오지 못했습니다."),
], ],
), ),
], ],
@@ -579,6 +590,10 @@ class _LoginScreenState extends ConsumerState<LoginScreen>
), ),
), ),
), ),
),
);
},
),
); );
} }
} }