Пример #1
0
        _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);
        }
Пример #2
0
 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;
 }