我正在尝试制作一个需要密钥的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),
);
}
),
],
)
答案 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(),
),
)
],
);
}
}