该小部件的所有子项都必须在可重新排序列表视图中拥有一个键

Par*_*eri 3 flutter flutter-layout

我想重新排序我的列表,但出现此错误。该小部件的所有子项都必须在可重新排序列表视图中拥有一个键

Widget list(list) {
    return Scrollbar(
      child: ReorderableListView(
          header: null,
          onReorder: _onReorder,
          padding: const EdgeInsets.symmetric(vertical: 8.0),
          children: <Widget>[
            ListView.builder(
              itemCount: list.length,
              shrinkWrap: true,
              itemBuilder: (contex, index) {
                return _singleToDoWidget(list[index], index);
              },
            )
          ]),
    );
}
Run Code Online (Sandbox Code Playgroud)

Ako*_*DKB 7

用于key唯一标识列表中的每个项目,因为您将移动它们。
你可以这样做:

ReoderableListView(
  header: null,
  onReorder: _onReorder,
  children: [
    for(var i; i < list.length; i++) {
      Container(
        key: ValueKey(list[index]),
        child: _singleToDoWidget(list[index], index),
    }
  ],
);
Run Code Online (Sandbox Code Playgroud)

或者您可以在小部件函数本身中指定key

Widget _singleToDoWidget(String title, int index) {
  return YourRootWidget(
    key: ValueKey(title),
    ...
  ),
}
Run Code Online (Sandbox Code Playgroud)

只是想说明您的实施以及 key 将去向