#flutter #dart #flutter-layout
Вопрос:
Я хочу показать строку, доступную для просмотра, которая изменяет свое значение при нажатии кнопки. Внутри тела есть имя переменной pressedText
. Это статическая переменная. При нажатии кнопки я хочу показать ее обновленное значение, но сейчас ничего не могу показать. Могу ли я показать его обновленное значение?
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("Second Route"), ), body: Column( children: lt;Widgetgt;[ Text( pressedText, style: TextStyle( fontSize: 30.0, ), ), Expanded( child: Center( child: Wrap( children: _buildButtonsWithNames(), ), ), ) ], ), } }
Комментарии:
1. Используйте setState для обновления значения в пользовательском интерфейсе и убедитесь, что вы используете виджет с полным состоянием
2. Это буквально пример hello world, приведенный при запуске проекта
3. Спасибо. Проблема в том, что у меня есть список повышенных кнопок, и я не знаю, как заставить его работать. Я имею в виду, что когда нажимается конкретная кнопка из этого списка, я не знаю, как с ней обращаться.
4. @masfiqreza Вы хотите изменить текст, исходя из того, какая кнопка нажата?
5. @bharats да. У меня есть список кнопок, который генерируется пользовательским вводом. Теперь я хочу, чтобы каждый раз, когда нажимается любая кнопка из этого списка, я объединял что-то в строковую переменную. И я покажу эту обновленную строку. Теперь это можно сделать с помощью setState. проблема в том, как узнать, какая кнопка из этого списка нажата?
Ответ №1:
вы можете изменить с помощью setState и связать свой Wrap
виджет с InkWll
функцией onTap и вызвать setState
ее, или вы можете передать функцию своему _buildButtonsWithNames
.
Expanded( child: Center( child: InkWell( onTap:(){ setState(() { pressedText = "change Text" }); }, child: Wrap( children: _buildButtonsWithNames(), ), ) ), )
Комментарии:
1. нужно ли мне добавлять onTap() в любой класс кнопок?
2. В классе Button вам это не нужно, но если вы передадите функцию обратного вызова, которую вам нужно использовать
onTap
в классе button. И если вы используете несколько кнопок, было бы хорошо передать их с помощью функции.