Как отобразить строковую переменную во флаттере, которая изменяется при нажатии кнопки?

#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. И если вы используете несколько кнопок, было бы хорошо передать их с помощью функции.