From 3582d3b888cda025146b6ebcdcae733ca88632ff Mon Sep 17 00:00:00 2001 From: lycheeaicoding Date: Fri, 14 Nov 2025 16:05:47 +0900 Subject: [PATCH] update 251114 --- lib/pages/signup.dart | 83 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 lib/pages/signup.dart diff --git a/lib/pages/signup.dart b/lib/pages/signup.dart new file mode 100644 index 0000000..3271074 --- /dev/null +++ b/lib/pages/signup.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:lhj_flutter/const.dart'; + +class SignupPage extends StatefulWidget { + const SignupPage({super.key}); + + @override + State createState() => _SignupPageState(); +} + +class _SignupPageState extends State { + final _formKey = GlobalKey(); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: backgroundColor, + appBar: AppBar(), + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 20.0), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [], + ), + ), + ), + ), + ); + } +} + +Widget _buildTextField({ + required bool isDarkMode, + required TextEditingController controller, + required String hintText, + bool obscureText = false, + TextInputType? keyboardType, + required IconData prefixIcon, + Widget? suffixIcon, + String? Function(String?)? validator, +}) { + final primaryColor = Color(0xFF137FEC); + final textColor = isDarkMode ? Colors.white : Color(0xFF101922); + final placeholderColor = isDarkMode ? Colors.white70 : Colors.black54; + final inputBackgroundColor = isDarkMode + ? Color(0xFF1C2A3A) + : Color(0xFFF3F6F9); + + return TextFormField( + controller: controller, + obscureText: obscureText, + keyboardType: keyboardType, + style: TextStyle(color: textColor, fontFamily: 'Poppins'), + validator: validator, + decoration: InputDecoration( + hintText: hintText, + hintStyle: TextStyle(color: placeholderColor, fontFamily: 'Poppins'), + filled: true, + fillColor: inputBackgroundColor, + prefixIcon: Icon(prefixIcon, color: placeholderColor), + suffixIcon: suffixIcon, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: primaryColor, width: 2), + ), + errorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.redAccent, width: 1), + ), + focusedErrorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.redAccent, width: 2), + ), + contentPadding: const EdgeInsets.symmetric(vertical: 18, horizontal: 16), + ), + ); +}