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, ), ), ), ); }} |