From bd162bd4b878e42ce6f066788aa1d381eb3c0875 Mon Sep 17 00:00:00 2001 From: lycheeaicoding Date: Tue, 11 Nov 2025 14:15:08 +0900 Subject: [PATCH] update 251111 --- lib/pages/login.dart | 131 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 114 insertions(+), 17 deletions(-) diff --git a/lib/pages/login.dart b/lib/pages/login.dart index 6b284ed..f9edcac 100644 --- a/lib/pages/login.dart +++ b/lib/pages/login.dart @@ -11,23 +11,119 @@ class LoginPage extends StatelessWidget { backgroundColor: backgroundColor, body: Stack( children: [ - Container( - padding: const EdgeInsets.fromLTRB(24, 32, 24, 8), - decoration: BoxDecoration(color: backgroundColor), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - _buildTextField( - icon: Icons.person_outline, - hintText: 'Username', - isDarkMode: isDarkMode, - inputBackgroundColor: inputBackgroundColor, - subtleTextColor: subtleTextColor, - textColor: textColor, - ), - ], + + Positioned( + top: 0, + left: 0, + right: 0, + height: MediaQuery.of(context).size.height * 2/3, + child: Image.network(imageURL, + fit: BoxFit.cover, ), ), + Column( + children: [ + AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + leading: IconButton( + icon: Icon(Icons.arrow_back, color: textColor), + onPressed: () { + + }, + ), + title: Text( + 'Login', + style: GoogleFonts.inter( + color: textColor, + fontWeight: FontWeight.bold, + fontSize: 20 + ), + ), + centerTitle: true, + actions: [const SizedBox(width: 48)] + ), + const Spacer(), + Container( + padding: const EdgeInsets.fromLTRB(24, 32, 24, 8), + decoration: BoxDecoration(color: backgroundColor), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + _buildTextField( + icon: Icons.person_outline, + hintText: 'UserName', + isDarkMode: isDarkMode, + inputBackgroundColor: inputBackgroundColor, + subtleTextColor: subtleTextColor, + textColor: textColor, + ), + const SizedBox(height: 24), + _buildTextField( + icon: Icons.lock_outline, + hintText: 'PassWord', + obscureText: true, + isDarkMode: isDarkMode, + inputBackgroundColor: inputBackgroundColor, + subtleTextColor: subtleTextColor, + textColor: textColor, + ), + const SizedBox(height: 24), + ElevatedButton( + onPressed: () {}, + style: ElevatedButton.styleFrom( + backgroundColor: primaryColor, + minimumSize: const Size(double.infinity, 60), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 0, + ), + child: Text( + 'Login', + style: GoogleFonts.inter( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + + ), + ), + Container( + color: backgroundColor, + padding: const EdgeInsets.fromLTRB(24, 8, 24, 32), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextButton( + onPressed: (){}, + child: Text( + 'Forgot PassWord?', + style: GoogleFonts.inter( + color: primaryColor, + fontWeight: FontWeight.w500, + ), + ), + ), + const SizedBox(width: 16), + TextButton( + onPressed: (){}, + child: Text( + 'Sign Up', + style: GoogleFonts.inter( + color: primaryColor, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), ], ), ); @@ -45,13 +141,14 @@ Widget _buildTextField({ }) { return TextField( obscureText: obscureText, + style: GoogleFonts.inter(color: textColor), decoration: InputDecoration( contentPadding: const EdgeInsets.symmetric(vertical: 20), hintText: hintText, hintStyle: GoogleFonts.inter(color: subtleTextColor), prefixIcon: Padding( padding: const EdgeInsets.only(left: 20, right: 12), - child: Icon(icon, color: subtleTextColor), + child: Icon(icon, color: subtleTextColor), ), filled: true, fillColor: inputBackgroundColor, @@ -62,7 +159,7 @@ Widget _buildTextField({ focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: const BorderSide(color: Color(0xFF137FEC), width: 2), - ) + ), ), ); }