AnimatedList-带动效的列表

import 'dart:async';

import 'package:flutter/material.dart';

class ListViewAni extends StatefulWidget {
const ListViewAni({super.key});

@override
State<ListViewAni> createState() => _ListViewAniState();
}

class _ListViewAniState extends State<ListViewAni> {
List<String> list = ['12', '23243'];
final globalKey = GlobalKey<AnimatedListState>();
bool flag = true;
Widget _buildItem(index) {
return ListTile(
title: Text(list[index]),
trailing: IconButton(
onPressed: () {
_deleteAct(index);
},
icon: Icon(Icons.delete),
),
);
}

void _deleteAct(index) {
print("删除的索引$index");
if (flag == true) {
flag = false;
setState(() {
globalKey.currentState!.removeItem(index, (context, animation) {
var removeItem = _buildItem(index);
list.removeAt(index); //删除数据源
return FadeTransition(//FadeTransition是动画效果,可以换
opacity: animation,
child: removeItem //执行动画的元素
);
});
});
//解决快速删除的bug
Timer.periodic(Duration(milliseconds: 500), (timer){
flag = true;
timer.cancel();
});
}
}

@override
void initState() {
// TODO: implement initState
super.initState();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("列表")),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
list.add("我是新增的数据");
globalKey.currentState!.insertItem(list.length - 1);
});
},
child: Text("+"),
),
body: AnimatedList(
key: globalKey,
initialItemCount: list.length,
itemBuilder: (content, index, animation) {
return FadeTransition(opacity: animation, child: _buildItem(index));
},
),
);
}
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容