gpt4 book ai didi

dart - 添加或删除项目时 SliverList 不会更新

转载 作者:行者123 更新时间:2023-12-03 02:43:31 27 4
gpt4 key购买 nike

这是我的代码:

class HomeCardList extends StatefulWidget {
final Location location;
final Position position;

HomeCardList(this.location, this.position);

@override
_HomeCardListState createState() => _HomeCardListState();
}

class _HomeCardListState extends State<HomeCardList> {
List<Widget> _homeCards = [TimeDateCard(), TimeDateCard()];

@override
Widget build(BuildContext context) {
return new CustomScrollView(
slivers: <Widget>[
new LocationAppbar(
location: widget.location,
position: widget.position,
),
new SliverList(
delegate: new SliverChildListDelegate(_homeCards),
),
new SliverToBoxAdapter(
child: RaisedButton(onPressed: () {
setState(() {
_homeCards.removeLast();
});
}),
),
new SliverFixedExtentList(
delegate: new SliverChildBuilderDelegate((context, index) {
return new Text('Item #$index');
}),
itemExtent: 320.0)
],
);
}
}

当我按下 RaisedButton 从我想显示的列表中删除最后一个小部件(如果我添加一个 print() 语句,我会看到一个条目已被删除),但没有按应有的方式更新状态,我仍然可以看到 2 个小部件。当我第三次按下按钮时,我尝试从空列表中删除项目时出现异常。

我在这里做错了什么?为什么当我从列表中删除一个小部件时,状态没有正确更新并且只显示一个小部件?

编辑:
当我尝试类似的东西时
setState(){
_homeCards = [];
}

它确实刷新了一个空列表,这里有什么问题?

最佳答案

您需要制作 _homeCards一个 setter/getter ,所以它被懒惰地计算,然后 setState将触发重建

关于dart - 添加或删除项目时 SliverList 不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com