Flutter: изменение состояния виджета «онлайн»
Вполне типичная ситуация: отображать пункты меню в зависимости от того, авторизован пользователь или нет. Используя глобальные переменные из предыдущей статьи, дополним код, при котором после «прохождения авторизации», соответствующий пункт меню будем скрывать. Для этого, мы можем использовать опять же виджет Visibility, который имеет свойство visible: true/false. Странно конечно, почему любой виджет не имеет этого свойства, а приходится его «обёртывать» им..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
.... Visibility( visible: globals.is_login==true?false:true, child: ListTile( leading: Icon(Icons.arrow_forward_ios,), title: Text('Авторизация'), trailing: Icon(Icons.arrow_forward_ios, color: Color(0xFF303030), size: 20,), tileColor: Color(0xFFF5F5F5), dense: false, onTap: (){ setState(() { globals.UserName="Вася Пукин "; globals.UserId="1"; globals.is_login=true; }); } ), ), ... |
Функция SetState внутри виджета заставляет перерисовать весь виджет.