Как сделать текстовый виджет видимым после нажатия кнопки

#dart #flutter #visible

#dart #трепетание #видимый

Вопрос:

У меня есть базовая страница входа, которая состоит из «электронной почты», «пароля» и «SwitchListTile» (переключатель), который пользователи будут выбирать для подтверждения чтения юридических документов. При «Входе» я бы хотел, чтобы отображался «Текст». По умолчанию он невидим.

Я реализовал видимость текста, используя класс ‘Visibility’. Теперь я хотел бы сделать его видимым с помощью проверки «if-else».

         SwitchListTile(
          value: _acceptTerms,
          onChanged: (bool value) {
            setState(() {
              _acceptTerms = value;
            });
          },
          title: Text('Accept Tamp;Cs'),
        ),
        SizedBox(height: 5.0),
        Visibility(
            visible: false,
            child: Text(
              'Please accept Terms amp; Conditions!',
              style: TextStyle(color: Colors.red),
            )),
        SizedBox(
          height: 10.0,
        ),
        RaisedButton(
          color: Theme.of(context).primaryColor,
          textColor: Colors.white,
          child: Text('LOGIN'),
          onPressed: () {
            print(_emailValue);
            print(_passwordValue);
            if(_acceptTerms) {
              Navigator.pushReplacementNamed(context, '/products');
            } else {
              //code to make invisible text visible
            }
          },
        ),
  

Я все еще новичок в разработке Flutter и Dart. Спасибо.

Ответ №1:

Единственный способ сделать это во flutter — создать переменную

 var tcVisibility = false
  

установите видимость текстового поля в переменную

 Visibility(
     visible: tcVisibility,
     child: Text(
     'Please accept Terms amp; Conditions!',
     style: TextStyle(color: Colors.red),
)),
  

затем в коде обновите переменную

 if(_acceptTerms) {
     Navigator.pushReplacementNamed(context, '/products');
} else {
    setState(() {
         tcVisibility = true;
    });
}
  

Ответ обновлен

Комментарии:

1. Вместо tcVisibility = false; , это должно быть tcVisibility = true; в предложении else.