栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

滚动后如何保持小部件的状态?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

滚动后如何保持小部件的状态?

您必须将状态(收藏夹与否)存储在父窗口小部件中。该

ListView.builder
部件上创建和需求破坏的项目,并且状态
时,该项目被破坏被丢弃。这意味着列表项应该始终是无状态的小部件。

class Item {  Item({this.name, this.isFavorite});  String name;  bool isFavorite;}class MyList extends StatefulWidget {  @override  State<StatefulWidget> createState() => MyListState();}class MyListState extends State<MyList> {  List<Item> items;  @override  void initState() {    super.initState();    // Generate example items    items = List<Item>();    for (int i = 0; i < 100; i++) {      items.add(Item(        name: 'Item $i',        isFavorite: false,      ));    }  }  @override  Widget build(BuildContext context) {    return ListView.builder(      itemCount: items.length,      itemBuilder: (context, index) {        return ListItem(          items[index],          () => onFavoritePressed(index),        );      },    );  }  onFavoritePressed(int index) {    final item = items[index];    setState(() {      item.isFavorite = !item.isFavorite;    });  }}class ListItem extends StatelessWidget {  ListItem(this.item, this.onFavoritePressed);  final Item item;  final VoidCallback onFavoritePressed;  @override  Widget build(BuildContext context) {    return ListTile(      title: Text(item.name),      leading: IconButton(        icon: Icon(item.isFavorite ? Icons.favorite : Icons.favorite_border),        onPressed: onFavoritePressed,      ),    );  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号