Định dạng ô nhập password sao cho đẹp và tiện dụng

 

Bước 1: Khai báo state để kiểm tra trạng thái ẩn hiện password

Phần khai báo này nên khai báo ở đầu widget

  bool _isObscure = true;

Bước 2: Thiết lập cho TextField để nhận vai trò ô nhập password

Trong đó:

– suffixIcon: Hiển thị biểu tượng hình mắt ẩn hiện

– Trong code dưới có phần setState() là hàm để thay đổi trạng thái ẩn hiện Password cho ô text.

TextField(
              obscureText: _isObscure,
              controller: _passwordController,
              decoration: InputDecoration(labelText: 'Password',
              suffixIcon: IconButton(
                    // Thay đổi trạng thái của obscureText khi nhấn vào nút toggle
                    onPressed: () {
                      setState(() {
                        _isObscure = !_isObscure;
                      });
                    },
                    // Hiển thị icon mắt khi mật khẩu được ẩn và icon mắt nhắm khi mật khẩu được hiển thị
                    icon: Icon(
                      _isObscure ? Icons.visibility : Icons.visibility_off,
                    ),
                  ),
              )
              
            ),

Bước 3: Định dạng màu sắc và khung viền

Phần này nếu định dạng chung cho tất cả TextField ứng dụng thì bạn đặt code dưới vào file main.dart ở trong phần themeData.

 

Nếu bạn muốn định dạng riêng cho một TextField thì viết ở bên trong thuộc tính decoration

 

inputDecorationTheme: const InputDecorationTheme(
          labelStyle: TextStyle(
              color: Colors.blue,
              fontSize: 12), // điều chỉnh màu sắc và kích thước font cho label
          enabledBorder: OutlineInputBorder(
            borderSide: BorderSide(
                color: Colors.blue,
                width: 1.0), // điều chỉnh màu sắc và chiều rộng viền TextField
          ),
          focusColor: Colors.green, // màu sắc khi TextField được focus
          focusedBorder: OutlineInputBorder(
            borderSide: BorderSide(
                color: Colors.blue,
                width: 1.0), // điều chỉnh màu sắc và chiều rộng viền TextField
          ),
          errorBorder: OutlineInputBorder(
                  borderSide: BorderSide(
                      color:  Color.fromARGB(255, 247, 189, 189),
                      width: 1.0), // điều chỉnh màu sắc và chiều rộng viền TextField
                ),
                focusedErrorBorder: OutlineInputBorder(
                  borderSide: BorderSide(
                      color: Color.fromARGB(255, 247, 189, 189),
                      width: 1.0), // điều chỉnh màu sắc và chiều rộng viền TextField
                ),
          fillColor: Color.fromARGB(0, 208, 230, 251), // màu nền của TextField
          filled: true, // cho phép điền màu cho TextField
          contentPadding: EdgeInsets.symmetric(vertical: 5, horizontal: 5), // Giảm padding trong TextField
          
        ),