Я создал приложение, которое содержит ряд из трех кнопок, которые при нажатии должны: 1) выделять жирным шрифтом 2) изменять вывод на странице
Я решил шаг 1, выполнив следующее:
Класс страницы имеет переменную экземпляра:
List<bool> _boldButtons = [false, true, false];
TextStyle каждой кнопки имеет свойство fontWeight:
fontWeight: _boldButtons[0] ? FontWeight.bold : FontWeight.normal),
И его onPresed:
onPressed: () {
setState(() {
_boldButtons = [true, false, false];
});
Это кажется хакерским, но делает свое дело. Если у кого-то есть лучший способ сделать это, я был бы рад услышать!
Чтобы решить проблему 2) Я думаю сделать что-то вроде этого:
Сделать три метода ( уведомления (), yourRecipes (), избранное ()), которые возвращают контейнер. Имейте переменную экземпляра в классе страницы этого типа:
Container wallOfText;
В каждой кнопке onPressed мы устанавливаем переменную wallOfText равной функции этой кнопки, что-то вроде этого:
onPressed: () {
wallOfText = boldButtons[0] ? wallOfText : notifications();
// ternary operator to check if we've already selected the button we're pressing, and therefore don't need to redefine what to display
setState(() {
_boldButtons = [true, false, false];
});
Затем мы отображаем переменную wallOfText в Scaffold.
Это также выглядит очень странно, но может работать. Есть ли более общий способ сделать это?