import 'package:flutter/material.dart';

class AnimatedListDemo extends StatefulWidget { @override _AnimatedListDemoState createState() => _AnimatedListDemoState(); }

class _AnimatedListDemoState extends State { final GlobalKey _listKey = GlobalKey(); List _data = ["Item 1", "Item 2", "Item 3"];

void _addItem() { setState(() { int index = _data.length; _data.insert(index, "Item ${index + 1}"); _listKey.currentState.insertItem(index); }); }

void _removeItem(int index) { setState(() { _listKey.currentState.removeItem( index, (BuildContext context, Animation animation) => _buildItem(_data[index], animation)); _data.removeAt(index); }); }

Widget _buildItem(String item, Animation animation) { return SizeTransition( sizeFactor: animation, child: ListTile( title: Text(item), trailing: IconButton( icon: Icon(Icons.delete), onPressed: () => _removeItem(_data.indexOf(item)), ), ), ); }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Animated List Demo"), ), body: AnimatedList( key: _listKey, initialItemCount: _data.length, itemBuilder: (BuildContext context, int index, Animation animation) { return _buildItem(_data[index], animation); }, ), floatingActionButton: FloatingActionButton( onPressed: _addItem, child: Icon(Icons.add), ), ); } }

Flutter 一个List绑定AnimatedList列表,并且删除List的数据就可以触发两个AnimatedList的删除动画,显示完整代码即可。

原文地址: https://www.cveoy.top/t/topic/vmD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录