Как динамически изменить изображение в списке, завершающемся onTap
Я пытался изменить код учебника. добавив динамическое изображение в конце и нажмите, чтобы изменить изображение. однако переменная меняется, но изображение не обновляется. Вот соответствующий код:
void _pushSaved(){
Navigator.of(context).push(
MaterialPageRoute<void>(
builder: (context){
final tiles = _saved.map(
(pair) {
return ListTile(
title: Text(
pair.asPascalCase,
style: _biggerFont
),
trailing: GestureDetector(
onTap: (){
if (imgName == "images/lion.jpg"){
imgName = "images/cat.jpg";
}else{
imgName = "images/lion.jpg";
}
setState(() {
});
},
child:Image.asset(imgName, fit: BoxFit.fitWidth),
)
);
}
);
final divided = tiles.isNotEmpty ?
ListTile.divideTiles(
context: context,
tiles: tiles
).toList() : <Widget>[];
return Scaffold(
appBar: AppBar(
title: const Text('Saved Suggestions'),
),
body: ListView(children: divided)
);
}
)
);
}
_pushSaved вызывается из onPressed и imgName, определенного вверху:
String imgName = "images/cat.jpg";
@override
Widget build(BuildContext context) {
/*
final wordPair = WordPair.random();
return Text(wordPair.asPascalCase);*/
return Scaffold(
appBar: AppBar(
title: const Text('Startup Name Generator'),
actions: [
IconButton(
icon: const Icon(Icons.list),
onPressed: _pushSaved,
tooltip: 'Saved Suggestions',
)
]
)
Нажатие на изображение не меняет его, но
1 ответ
state
не изменяется, если не указано новое значение.
setState(() {
if (imgName == "images/lion.jpg"){
imgName = "images/cat.jpg";
}else{
imgName = "images/lion.jpg";
}
});