public Viewport( Key key = null, AxisDirection axisDirection = AxisDirection.down, AxisDirection?crossAxisDirection = null, float anchor = 0.0f, ViewportOffset offset = null, Key center = null, float?cacheExtent = null, CacheExtentStyle cacheExtentStyle = CacheExtentStyle.pixel, List <Widget> slivers = null ) : base(key: key, children: slivers) { D.assert(offset != null); D.assert(slivers != null); D.assert(center == null || LinqUtils <Widget> .WhereList(slivers, ((Widget child) => child.key == center)).Count() == 1); D.assert(cacheExtentStyle != null); D.assert(cacheExtentStyle != CacheExtentStyle.viewport || cacheExtent != null); this.axisDirection = axisDirection; this.crossAxisDirection = crossAxisDirection; this.anchor = anchor; this.offset = offset; this.center = center; this.cacheExtent = cacheExtent; this.cacheExtentStyle = cacheExtentStyle; }
public static ScrollMetrics copyWith(ScrollMetrics it, float?minScrollExtent = null, float?maxScrollExtent = null, float?pixels = null, float?viewportDimension = null, AxisDirection?axisDirection = null, float?viewportFraction = null ) { if (it is IPageMetrics) { return(new PageMetrics( minScrollExtent: minScrollExtent ?? it.minScrollExtent, maxScrollExtent: maxScrollExtent ?? it.maxScrollExtent, pixels: pixels ?? it.pixels, viewportDimension: viewportDimension ?? it.viewportDimension, axisDirection: axisDirection ?? it.axisDirection, viewportFraction: viewportFraction ?? ((IPageMetrics)it).viewportFraction )); } return(new FixedScrollMetrics( minScrollExtent: minScrollExtent ?? it.minScrollExtent, maxScrollExtent: maxScrollExtent ?? it.maxScrollExtent, pixels: pixels ?? it.pixels, viewportDimension: viewportDimension ?? it.viewportDimension, axisDirection: axisDirection ?? it.axisDirection )); }
public ShrinkWrappingViewport( Key key = null, AxisDirection?axisDirection = AxisDirection.down, AxisDirection?crossAxisDirection = null, ViewportOffset offset = null, List <Widget> slivers = null ) : base(key: key, children: slivers ?? new List <Widget>()) { D.assert(offset != null); this.axisDirection = axisDirection; this.crossAxisDirection = crossAxisDirection; this.offset = offset; }
AxisDirection?_getDirection(BuildContext context) { switch (widget.scrollDirection) { case Axis.horizontal: D.assert(WidgetsD.debugCheckHasDirectionality(context)); TextDirection textDirection = Directionality.of(context); AxisDirection?axisDirection = AxisUtils.textDirectionToAxisDirection(textDirection); return(widget.reverse ? AxisUtils.flipAxisDirection(axisDirection) : axisDirection); case Axis.vertical: return(widget.reverse ? AxisDirection.up : AxisDirection.down); } throw new UIWidgetsError("fail to get axis direction"); }
public static bool axisDirectionIsReversed(AxisDirection?axisDirection) { D.assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: case AxisDirection.left: return(true); case AxisDirection.down: case AxisDirection.right: return(false); } throw new Exception("unknown axisDirection"); }
public static Axis?axisDirectionToAxis(AxisDirection?axisDirection) { D.assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: case AxisDirection.down: return(Axis.vertical); case AxisDirection.left: case AxisDirection.right: return(Axis.horizontal); } return(null); }
public static AxisDirection?applyGrowthDirectionToAxisDirection( AxisDirection?axisDirection, GrowthDirection?growthDirection) { D.assert(axisDirection != null); D.assert(growthDirection != null); switch (growthDirection) { case GrowthDirection.forward: return(axisDirection); case GrowthDirection.reverse: return(AxisUtils.flipAxisDirection(axisDirection)); } throw new Exception("unknown growthDirection"); }
public override Widget build(BuildContext context) { AxisDirection?axisDirection = _getDirection(context); ScrollPhysics physics = new _ForceImplicitScrollPhysics( allowImplicitScrolling: widget.allowImplicitScrolling ).applyTo(widget.pageSnapping ? PageViewUtils._kPagePhysics.applyTo(widget.physics) : widget.physics); return(new NotificationListener <ScrollNotification>( onNotification: (ScrollNotification notification) => { if (notification.depth == 0 && widget.onPageChanged != null && notification is ScrollUpdateNotification) { IPageMetrics metrics = (IPageMetrics)notification.metrics; int currentPage = metrics.page.round(); if (currentPage != _lastReportedPage) { _lastReportedPage = currentPage; widget.onPageChanged(currentPage); } } return false; }, child: new Scrollable( dragStartBehavior: widget.dragStartBehavior, axisDirection: axisDirection, controller: widget.controller, physics: physics, viewportBuilder: (BuildContext _context, ViewportOffset position) => { return new Viewport( cacheExtent: widget.allowImplicitScrolling ? 1.0f : 0.0f, cacheExtentStyle: CacheExtentStyle.viewport, axisDirection: axisDirection, offset: position, slivers: new List <Widget> { new SliverFillViewport( viewportFraction: widget.controller.viewportFraction, _delegate: widget.childrenDelegate ) } ); } ) )); }
public PageMetrics copyWith( float?minScrollExtent = null, float?maxScrollExtent = null, float?pixels = null, float?viewportDimension = null, AxisDirection?axisDirection = null, float?viewportFraction = null ) { return(new PageMetrics( minScrollExtent: minScrollExtent ?? this.minScrollExtent, maxScrollExtent: maxScrollExtent ?? this.maxScrollExtent, pixels: pixels ?? this.pixels, viewportDimension: viewportDimension ?? this.viewportDimension, axisDirection: axisDirection ?? this.axisDirection, viewportFraction: viewportFraction ?? this.viewportFraction )); }
public FixedExtentMetrics copyWith( float?minScrollExtent = null, float?maxScrollExtent = null, float?pixels = null, float?viewportDimension = null, AxisDirection?axisDirection = null, int?itemIndex = null ) { return(new FixedExtentMetrics( minScrollExtent: minScrollExtent ?? this.minScrollExtent, maxScrollExtent: maxScrollExtent ?? this.maxScrollExtent, pixels: pixels ?? this.pixels, viewportDimension: viewportDimension ?? this.viewportDimension, axisDirection: axisDirection ?? this.axisDirection, itemIndex: itemIndex ?? this.itemIndex )); }
public Scrollable( Key key = null, AxisDirection?axisDirection = AxisDirection.down, ScrollController controller = null, ScrollPhysics physics = null, ViewportBuilder viewportBuilder = null, ScrollIncrementCalculator incrementCalculator = null, DragStartBehavior dragStartBehavior = DragStartBehavior.start ) : base(key: key) { D.assert(axisDirection != null); D.assert(viewportBuilder != null); this.axisDirection = axisDirection.Value; this.controller = controller; this.physics = physics; this.viewportBuilder = viewportBuilder; this.incrementCalculator = incrementCalculator; this.dragStartBehavior = dragStartBehavior; }
public static AxisDirection?flipAxisDirection(AxisDirection?axisDirection) { D.assert(axisDirection != null); switch (axisDirection.Value) { case AxisDirection.up: return(AxisDirection.down); case AxisDirection.right: return(AxisDirection.left); case AxisDirection.down: return(AxisDirection.up); case AxisDirection.left: return(AxisDirection.right); } return(null); }
public Viewport( Key key = null, AxisDirection axisDirection = AxisDirection.down, AxisDirection?crossAxisDirection = null, float anchor = 0.0f, ViewportOffset offset = null, Key center = null, float?cacheExtent = null, List <Widget> slivers = null ) : base(key: key, children: slivers) { D.assert(offset != null); D.assert(center == null || this.children.Count(child => child.key == center) == 1); this.axisDirection = axisDirection; this.crossAxisDirection = crossAxisDirection; this.anchor = anchor; this.offset = offset; this.center = center; this.cacheExtent = cacheExtent; }
public override Widget build(BuildContext context) { List <Widget> slivers = buildSlivers(context); AxisDirection?axisDirection = getDirection(context); ScrollController scrollController = primary ? PrimaryScrollController.of(context) : controller; Scrollable scrollable = new Scrollable( dragStartBehavior: dragStartBehavior, axisDirection: axisDirection, controller: scrollController, physics: physics, viewportBuilder: (viewportContext, offset) => buildViewport(viewportContext, offset, axisDirection, slivers) ); Widget scrollableResult = primary && scrollController != null ? (Widget)PrimaryScrollController.none(child: scrollable) : scrollable; if (keyboardDismissBehavior == ScrollViewKeyboardDismissBehavior.onDrag) { return(new NotificationListener <ScrollUpdateNotification>( child: scrollableResult, onNotification: (ScrollUpdateNotification notification) => { FocusScopeNode focusScope = FocusScope.of(context); if (notification.dragDetails != null && focusScope.hasFocus) { focusScope.unfocus(); } return false; } )); } else { return(scrollableResult); } }
public void update(ScrollMetrics metrics, AxisDirection axisDirection) { this._lastMetrics = metrics; this._lastAxisDirection = axisDirection; this.notifyListeners(); }
public static AxisDirection?getDefaultCrossAxisDirection(BuildContext context, AxisDirection?axisDirection) { D.assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: return(AxisUtils.textDirectionToAxisDirection(Directionality.of(context))); case AxisDirection.right: return(AxisDirection.down); case AxisDirection.down: return(AxisUtils.textDirectionToAxisDirection(Directionality.of(context))); case AxisDirection.left: return(AxisDirection.down); } return(null); }