public _ActiveItem( AnimationController controller, int itemIndex, AnimatedListRemovedItemBuilder removedItemBuilder ) { this.controller = controller; this.itemIndex = itemIndex; this.removedItemBuilder = removedItemBuilder; }
public void removeItem(int index, AnimatedListRemovedItemBuilder builder, TimeSpan?duration = null) { duration = duration ?? _kDuration; D.assert(index >= 0); D.assert(builder != null); D.assert(duration != null); int itemIndex = _indexToItemIndex(index); D.assert(itemIndex >= 0 && itemIndex < _itemsCount); D.assert(_activeItemAt(_outgoingItems, itemIndex) == null); _ActiveItem incomingItem = _removeActiveItemAt(_incomingItems, itemIndex); AnimationController controller = incomingItem?.controller ?? new AnimationController(duration: duration, value: 1.0f, vsync: this); _ActiveItem outgoingItem = new _ActiveItem(controller, itemIndex, builder); setState(() => { _outgoingItems.Add(outgoingItem); _outgoingItems.Sort(); }); controller.reverse().then((_) => { _removeActiveItemAt(_outgoingItems, outgoingItem.itemIndex).controller.dispose(); foreach (_ActiveItem item in _incomingItems) { if (item.itemIndex > outgoingItem.itemIndex) { item.itemIndex -= 1; } } foreach (_ActiveItem item in _outgoingItems) { if (item.itemIndex > outgoingItem.itemIndex) { item.itemIndex -= 1; } } setState(() => _itemsCount -= 1); }); }
public void removeItem(int index, AnimatedListRemovedItemBuilder builder, TimeSpan?duration = null) { duration = duration ?? _kDuration; _sliverAnimatedListKey.currentState.removeItem(index, builder, duration: duration); }