我正在尝试熟悉颤振,但遇到了一些奇怪的情况。我想建立一个动态的ListView
其中一个+
按钮允许添加元素。我写了以下状态代码:
class MyWidgetListState extends State<MyWidgetList> {
List<Widget> _objectList = <Widget>[
new Text('test'),
new Text('test')
];
void _addOne() {
setState(() {
_objectList.add(new Text('test'));
});
}
void _removeOne() {
setState(() {
_objectList.removeLast();
});
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new ListView(
shrinkWrap: true,
children: _objectList
),
new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new IconButton(
icon: new Icon(Icons.remove_circle),
iconSize: 36.0,
tooltip: 'Remove',
onPressed: _objectList.length > 2 ? _removeOne : null,
),
new IconButton(
icon: new Icon(Icons.add_circle),
iconSize: 36.0,
tooltip: 'Add',
onPressed: _addOne,
)
],
),
new Text(_objectList.length.toString())
],
);
}
}
我的问题是 ListView 在视觉上与我初始化它的 2 个元素粘在一起。
在内部_objectList
管理良好。为了测试目的,我添加了一个简单的Text
底部的小部件显示列表的大小。当我单击“添加/删除”按钮时,这个效果很好,并且它会正确刷新。我错过了什么吗?