Flutter — показать/скрыть пароль в текстовом поле
В этой статье мы реализуем , как показать/скрыть пароль в текстовом поле. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы настроить Flutter Development в Android Studio, обратитесь к разделу «Настройка Android Studio для разработки Flutter», а затем создайте новый проект в Android Studio, пожалуйста, обратитесь к разделу «Создание простого приложения во Flutter».
Шаг 2: Добавьте пакет материала , который дает нам важный метод для использования, и вызовите метод runApp в основной функции, которая будет вызывать наше приложение.
import "package:flutter/material.dart"; void main() { runApp(RunMyApp()); }
Шаг 3: Теперь нам нужно создать виджет RunMyApp с сохранением состояния. Поскольку наше приложение меняет свое состояние, а затем возвращает виджет materialApp , который позволяет нам установить заголовок и тему , а также иметь множество других свойств.
class RunMyApp extends StatefulWidget { const RunMyApp({super.key}); @override State<RunMyApp> createState() => _RunMyAppState(); } class _RunMyAppState extends State<RunMyApp> { bool passwordVisible=false; @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData(primarySwatch: Colors.green), home: ); } }
Шаг 4: Дайте свойство home , и может появиться виджет скаффолда со свойствами AppBar и body . AppBar имеет свойство title для установки заголовка приложения. Тело содержит контейнер с дочерним элементом TextField. TextField имеет много параметров, таких как оформление, obscureText . Здесь точка obscureText принимает значения true и false. Если это правда, это означает, что пароль виден, иначе нет. Мы можем использовать кнопку значка суффикса, чтобы изменить состояние значения obscureText . Когда мы нажимаем кнопку значка суффикса, вызывается метод setState и изменяется значение переменной passwordVisible . параметр украшения , обычно используемый для настройки текстового поля. Он устанавливает границу, текст подсказки, текст метки, вспомогательный текст, значок суффикса, значок префикса, метод onpressed .
Scaffold( appBar: AppBar(title: Text("Show or Hide Password in TextField"),), body: Container( padding: EdgeInsets.all(20.0), child: TextField( obscureText: passwordVisible, decoration: InputDecoration( border: UnderlineInputBorder(), hintText: "Password", labelText: "Password", helperText:"Password must contain special character", helperStyle:TextStyle(color:Colors.green), suffixIcon: IconButton( icon: Icon(passwordVisible ? Icons.visibility : Icons.visibility_off), onPressed: () { setState( () { passwordVisible = !passwordVisible; }, ); }, ), alignLabelWithHint: false, filled: true, ), keyboardType: TextInputType.visiblePassword, textInputAction: TextInputAction.done, ), ), ),
Окончательный код
Dart
import "package:flutter/material.dart" ; void main() { runApp(RunMyApp()); } class RunMyApp extends StatefulWidget { const RunMyApp({super.key}); @override State<RunMyApp> createState() => _RunMyAppState(); } class _RunMyAppState extends State<RunMyApp> { bool passwordVisible= false ; @override void initState(){ super.initState(); passwordVisible= true ; } @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false , theme: ThemeData(primarySwatch: Colors.green), home: Scaffold( appBar: AppBar(title: Text( "Show or Hide Password in TextField" ),), body: Container( padding: EdgeInsets.all(20.0), child: TextField( obscureText: passwordVisible, decoration: InputDecoration( border: UnderlineInputBorder(), hintText: "Password" , labelText: "Password" , helperText: "Password must contain special character" , helperStyle:TextStyle(color:Colors.green), suffixIcon: IconButton( icon: Icon(passwordVisible ? Icons.visibility : Icons.visibility_off), onPressed: () { setState( () { passwordVisible = !passwordVisible; }, ); }, ), alignLabelWithHint: false , filled: true , ), keyboardType: TextInputType.visiblePassword, textInputAction: TextInputAction.done, ), ), ), ); } } |