I have very simple case of using flutter hooks:
class PositionedTiles extends HookWidget {
@override
Widget build(BuildContext context) {
final counterList = useState<List<int>>([1,2,3,4,5]);
return Scaffold(
body: Text("Counter: ${counterList.value}"),
floatingActionButton: FloatingActionButton(
onPressed: () => counterList.value.removeAt(0),
child: const Icon(Icons.sentiment_very_satisfied)),
);
);
}
So, after click floatingActionButton the printed list (counterList) doesn't change. I conclude that rebuild is not invoked.
Why hook doesn't see that the list has been changed?
How to signal that the list (counterList) has been changed after onPressed invoked in order to rebuild?
CodePudding user response:
To update the state you need to reassign the list.
onPressed: () {
counterList.value = [...counterList.value..removeAt(0)];
log("${counterList.value}");
},
