54 lines
1.8 KiB
Dart
54 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
|
|
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),
|
|
),
|
|
);
|
|
}
|