import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class PsdTextField extends StatefulWidget { final TextEditingController controller; final String? hintText; const PsdTextField({ Key? key, required this.controller, this.hintText, }) : super(key: key); @override _PsdTextFieldState createState() => _PsdTextFieldState(); } class _PsdTextFieldState extends State { bool visible = false; @override Widget build(BuildContext context) { return Container( width: 686.w, height: 94.w, decoration: BoxDecoration( borderRadius: BorderRadius.circular(60.w), color: Colors.black.withOpacity(0.06), ), child: TextField( maxLength: 20, onChanged: (text) { setState(() {}); }, controller: widget.controller, obscureText: !visible, obscuringCharacter: '*', decoration: InputDecoration( isDense: false, contentPadding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.w), border: InputBorder.none, hintText: widget.hintText ?? '请输入密码', counterText: '', suffixIconConstraints: BoxConstraints(minHeight: 50.w, maxHeight: 50.w), suffixIcon: GestureDetector( onTap: () { visible = !visible; setState(() {}); }, child: Padding( padding: EdgeInsets.only(right: 20.w), child: Icon( visible ? CupertinoIcons.eye : CupertinoIcons.eye_slash, color: Colors.black.withOpacity(0.4), ), ), ), hintStyle: TextStyle( color: Colors.black.withOpacity(0.25), fontSize: 28.sp)), ), ); } }