此小部件的所有子代必须具有可重新排序的密钥

时间:2020-05-14 21:21:40

标签: flutter dart

我正在尝试制作一个需要密钥的ReorderableListView。我放了它,但是它返回错误“此小部件的所有子代都必须具有密钥”。谁能帮我? (我在这里看到过类似的问题,但仍然无法解决)。我看到了一些使用这种形式的键的示例,但是索引无法识别图像中显示的索引

ReorderableListView(
              onReorder: _onReorder,
              scrollDirection: Axis.vertical,
              padding: const EdgeInsets.symmetric(vertical: 8),
              children: <Widget>[
                ListView.builder(
                    itemCount: dias.length,
                    itemBuilder: (context, int index) {
                      return Padding(
                        key: ValueKey(dias[index]),
                        padding: EdgeInsets.all(0),
                        child: _cartaodia(context, index),
                      );
                    }
                ),
          ],
          )

enter image description here

1 个答案:

答案 0 :(得分:0)

原因:当您将ListView作为子级传递给ReorderableListView时。

尝试这样的事情

    class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  List<int> _dataList = List.generate(10, (_) => _);

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Expanded(
          child: ReorderableListView(
            onReorder: (X, Y) {},
            scrollDirection: Axis.vertical,
            padding: const EdgeInsets.symmetric(vertical: 8),
            children: _dataList
                .map((data) => Padding(
                      key: Key('$data'),
                      padding: EdgeInsets.all(0),
                      child: Text(
                        '$data',
                        style: TextStyle(color: Colors.grey),
                      ),
                    ))
                .toList(),
          ),
        )
      ],
    );
  }
}