Как динамически изменить изображение в списке, завершающемся 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";
  }
});
Другие вопросы по тегам