如何在 Flutter hooks 中使用 List<int> 的State?

wap*_*apn 1 dart flutter flutter-widget flutter-hooks

我有使用 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)),
        );
    );
  }
Run Code Online (Sandbox Code Playgroud)

因此,单击后floatingActionButton打印的列表 ( counterList) 不会改变。我的结论是没有调用重建。

为什么 hook 没有看到列表已更改?

如何指示列表 ( counterList) 在调用后已更改onPressed以便重建?

Md.*_*ikh 6

要更新状态,您需要重新分配列表。

onPressed: () {
  counterList.value = [...counterList.value..removeAt(0)];
  log("${counterList.value}");
},
Run Code Online (Sandbox Code Playgroud)