#flutter #dart
#flutter #dart
Вопрос:
как реализовать, когда я нажимаю кнопку «changenName», все добавленные и отображаемые имена изменятся на «test2»? Я должен использовать nameList.forEach() или nameList.where()?
String name = 'test';
List<String> nameList = List<String>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Center(
child: nameList.length == 0
? Text('0')
: Column(
children: nameList
.map(
(e) => Text(e),
)
.toList(),
),
),
RaisedButton(
onPressed: () {
setState(() {
nameList.add(name);
});
},
child: Text('add'),
),
RaisedButton(
onPressed: () {
setState(() {
//??
});
},
child: Text('changeName'),
)
],
),
Комментарии:
1. Не ясно. Пожалуйста, добавьте скриншот текущего вывода и ожидаемого результата
2. Я попытаюсь объяснить, чего бы я хотел. когда я должен нажать «добавить», «имя» было добавлено в список и отображено. допустим, я добавил в список 2 «имя», и оно отобразилось на экране «test», «test». Я хотел бы нажать на ‘changeName’, и этот ‘test’ ‘test’ изменится на ‘test2’ ‘test2’
3. А, понятно. Это понятно. Я добавлю свой ответ
Ответ №1:
Вы можете написать функцию для обновления имени, которая принимает имя, подлежащее изменению, в качестве аргумента, и при нажатии вы можете вызвать эту функцию внутри setState.
После изменения имени один раз и для дальнейшего добавления, если вы хотите добавить то же имя, вам может потребоваться присвоить эту строку переменной ‘name’;
Пример:
changeName(String name){
for(int i=0;i<list.length;i ){
list[i] = name;
}
}
String name = 'test';
List<String> nameList = List<String>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Center(
child: nameList.length == 0
? Text('0')
: Column(
children: nameList
.map(
(e) => Text(e),
)
.toList(),
),
),
RaisedButton(
onPressed: () {
setState(() {
nameList.add(name);
});
},
child: Text('add'),
),
RaisedButton(
onPressed: () {
setState(() {
name = 'test2'; //If you want to change the names for future
//values
changeName(name);
});
},
child: Text('changeName'),
)
],
),