在执行诸如轻击行之类的操作后,如何更新/刷新ListView的视图



我正在学习Flutter网站上保存的/最喜欢的教程

代码:

void _pushFavourites() {
Navigator.of(context).push(
MaterialPageRoute<void>(builder: (BuildContext ctx) {
var tiles = _favourites.map((WordPair pair) {
return ListTile(
title: Text(pair.asCamelCase, style: _fontStyle),
onTap: () {
// ⬇︎ probably here I should update tiles, but I don't know how to do it
setState(() {
_favourites.remove(pair);
});
},
);
});
final divided = ListTile.divideTiles(
context: ctx,
tiles: tiles,
).toList();
return Scaffold(
appBar: AppBar(title: Text('Favourite Suggestions')),
body: ListView(children: divided,)
);

})
);
}

整个代码都在这里

您正在调用父路由的setState(具有函数_pushFavourites的小部件(

为这部分代码创建一个单独的有状态小部件,它应该可以工作:

var tiles = _favourites.map((WordPair pair) {
return ListTile(
title: Text(pair.asCamelCase, style: _fontStyle),
onTap: () {
// ⬇︎ probably here I should update tiles, but I don't know how to do it
setState(() {
_favourites.remove(pair);
});
},
);
});
final divided = ListTile.divideTiles(
context: ctx,
tiles: tiles,
).toList();
return Scaffold(
appBar: AppBar(title: Text('Favourite Suggestions')),
body: ListView(children: divided,)
);

最新更新