_ChildEntry _newEntry( Widget child, AnimatedSwitcherTransitionBuilder builder, AnimationController controller, Animation <float> animation ) { _ChildEntry entry = new _ChildEntry( widgetChild: child, transition: KeyedSubtree.wrap(builder(child, animation), this._childNumber), animation: animation, controller: controller ); animation.addStatusListener((AnimationStatus status) => { if (status == AnimationStatus.dismissed) { this.setState(() => { D.assert(this.mounted); D.assert(this._outgoingEntries.Contains(entry)); this._outgoingEntries.Remove(entry); this._markChildWidgetCacheAsDirty(); }); controller.dispose(); } }); return(entry); }
public AnimatedSwitcher( Key key = null, Widget child = null, TimeSpan?duration = null, Curve switchInCurve = null, Curve switchOutCurve = null, AnimatedSwitcherTransitionBuilder transitionBuilder = null, AnimatedSwitcherLayoutBuilder layoutBuilder = null ) : base(key: key) { D.assert(duration != null); this.switchInCurve = switchInCurve ?? Curves.linear; this.switchOutCurve = switchOutCurve ?? Curves.linear; this.transitionBuilder = transitionBuilder ?? defaultTransitionBuilder; this.layoutBuilder = layoutBuilder ?? defaultLayoutBuilder; this.child = child; this.duration = duration; }