我已经使用了一个有状态的小部件,但是当按下添加按钮时,这个项目似乎不会显示。
final TextEditingController _commentController = TextEditingController();
List<String> _genComments = [
'comment 1',
'comment 2',
'comment 3',
'comment 4',
'comment 5'
];
下面是我在ListView
中显示项目的代码:
Expanded(
child: Container(
width: double.infinity,
child: ListView.builder(
itemCount: _genComments.length,
itemBuilder: (context, index) {
return Container(
width: double.infinity,
height: 100,
child: Card(
color: Colors.white,
elevation: 5,
child: Text(_genComments[index]),
),
);
},
),
),
),
下面是我在button中使用setState
的代码:
child: ElevatedButton(
onPressed: () {
setState(() {
_genComments.add(_commentController.text);
});
_commentController.clear();
},
2条答案
按热度按时间km0tfn4u1#
您可以使用以下代码在列表视图中添加新元素
vc6uscn92#
当你调用
setState
时,它将调用build
方法。这意味着在这个方法中的所有小部件将被重新执行。一个常见的错误是,人们在
build
方法中声明变量。这会导致状态变量不会更新。因为每次他们调用setState
时,值都会重新声明为初始值。例如:在
build
方法外声明状态变量。因此,当您调用
setState
时,它将更新变量的值。