我正在学习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,)
);