#flutter #flutter-web
Вопрос:
Вот мой код для поля пароля:
TextFormField(
obscureText: isObscure,
decoration: InputDecoration(
suffix: TextButton(
child: isPasswordObscure
? Text(
'Show',
style: TextStyle(color: Colors.grey),
)
: Text(
'Hide',
style: TextStyle(color: Colors.grey),
),
onPressed: () {
setState(() { isObscure = !isObscure; });
},
),
),
)
Если я запущу его, поле пароля будет выглядеть следующим образом:
Если вы просмотрите мой код, я указал только текстовую кнопку, а не значок в качестве суффикса. Значок видимости был добавлен Flutter Edge, и когда я нажимаю на него, он только меняет свой значок и не отменяет подписку или не закрывает текстовое поле.
Что я хочу знать, так это как мне изменить или удалить значок? И, возможно, также перезвоните ему, чтобы он знал, что делать, когда я нажму на него.
Проблема не существует на мобильных устройствах, только на краю рабочего стола браузеров.
Изменить: Я попытался установить suffix
значение и suffixIcon
равным нулю, но значок видимости все еще отображается.
Обновление: Я обнаружил, что проблема существует только в MS Edge.
Ответ №1:
Если вы хотите отключить значок видимости, установите значение onPressed: () {}, а также, если вы хотите удалить обзор формы значка видимости, оберните его виджетом непрозрачности
Непрозрачность( непрозрачность: 0.0, дочерний элемент: TextButton(),
Комментарии:
1. Привет, пожалуйста, прочтите еще раз мой вопрос. Спасибо 😀
Ответ №2:
Пожалуйста, найдите приведенный ниже пример кода, чтобы включить опцию видимости для текстового поля. путем включения переменной _isObscured
в виджет с отслеживанием состояния. мы реализовали его с автоматическим затемнением после 2-секундной задержки.
Center(child: TextField(
obscureText: _isObscured,
decoration : InputDecoration(
suffix:InkWell(
onTap: (){
setState(() => this._isObscured =
!this._isObscured);
Future.delayed(Duration(seconds: 2), (){
setState(() => this._isObscured =
!this._isObscured);
});
},
child: Icon( Icons.visibility),
),
),
),
),
),
Комментарии:
1. Привет, пожалуйста, прочтите еще раз мой вопрос. Спасибо 😀
2. @Блейзет. используете ли вы какие-либо библиотеки для создания формы.
3. Нет, это не так. Способны ли вы воспроизвести проблему?
4. нет. Мы не можем, я мог бы получить только обычное текстовое поле
5. Решил эту проблему. Он отображается только в Microsoft Edge, а не в Google Chrome. Хотя я не знаю о других браузерах.