コード例 #1
0
        public float estimateMaxScrollOffset(SliverConstraints constraints,
                                             int firstIndex             = 0,
                                             int lastIndex              = 0,
                                             float leadingScrollOffset  = 0,
                                             float trailingScrollOffset = 0
                                             )
        {
            int?childCount = this.childCount;

            if (childCount == null)
            {
                return(float.PositiveInfinity);
            }

            return(widget.estimateMaxScrollOffset(
                       constraints,
                       firstIndex,
                       lastIndex,
                       leadingScrollOffset,
                       trailingScrollOffset
                       ) ?? _extrapolateMaxScrollOffset(
                       firstIndex,
                       lastIndex,
                       leadingScrollOffset,
                       trailingScrollOffset,
                       childCount.Value
                       ));
        }
コード例 #2
0
 public BoxConstraints getBoxConstraints(SliverConstraints constraints)
 {
     return(constraints.asBoxConstraints(
                minExtent: this.mainAxisExtent ?? 0.0f,
                maxExtent: this.mainAxisExtent ?? 0.0f,
                crossAxisExtent: this.crossAxisExtent ?? 0.0f
                ));
 }
コード例 #3
0
        public override SliverGridLayout getLayout(SliverConstraints constraints)
        {
            float       tileWidth  = (constraints.crossAxisExtent - _spacing) / 2.0f;
            const float tileHeight = 40.0f + 144.0f + 40.0f;

            return(new _ShrineGridLayout(
                       tileWidth: tileWidth,
                       tileHeight: tileHeight,
                       rowStride: tileHeight + _spacing,
                       columnStride: tileWidth + _spacing
                       ));
        }
コード例 #4
0
 public virtual float?estimateMaxScrollOffset(
     SliverConstraints constraints,
     int firstIndex,
     int lastIndex,
     float leadingScrollOffset,
     float trailingScrollOffset
     )
 {
     D.assert(lastIndex >= firstIndex);
     return(del.estimateMaxScrollOffset(
                firstIndex,
                lastIndex,
                leadingScrollOffset,
                trailingScrollOffset
                ));
 }
コード例 #5
0
        public override SliverGridLayout getLayout(SliverConstraints constraints)
        {
            float tileWidth =
                (constraints.crossAxisExtent -
                 (material_._yearPickerColumnCount - 1) * material_._yearPickerRowSpacing) /
                material_._yearPickerColumnCount;

            return(new SliverGridRegularTileLayout(
                       childCrossAxisExtent: tileWidth,
                       childMainAxisExtent: material_._yearPickerRowHeight,
                       crossAxisCount: material_._yearPickerColumnCount,
                       crossAxisStride: tileWidth + material_._yearPickerRowSpacing,
                       mainAxisStride: material_._yearPickerRowHeight,
                       reverseCrossAxis: AxisUtils.axisDirectionIsReversed(constraints.crossAxisDirection)
                       ));
        }
コード例 #6
0
        public override SliverGridLayout getLayout(SliverConstraints constraints)
        {
            const int columnCount = daysPerWeek;
            float     tileWidth   = constraints.crossAxisExtent / columnCount;
            float     tileHeight  = Mathf.Min(material_._dayPickerRowHeight,
                                              constraints.viewportMainAxisExtent / material_._maxDayPickerRowCount);

            return(new SliverGridRegularTileLayout(
                       childCrossAxisExtent: tileWidth,
                       childMainAxisExtent: tileHeight,
                       crossAxisCount: columnCount,
                       crossAxisStride: tileWidth,
                       mainAxisStride: tileHeight,
                       reverseCrossAxis: AxisUtils.axisDirectionIsReversed(constraints.crossAxisDirection)
                       ));
        }
コード例 #7
0
 public double?estimateMaxScrollOffset(
     SliverConstraints constraints,
     int firstIndex,
     int lastIndex,
     double leadingScrollOffset,
     double trailingScrollOffset
     )
 {
     D.assert(lastIndex >= firstIndex);
     return(this.del.estimateMaxScrollOffset(
                firstIndex,
                lastIndex,
                leadingScrollOffset,
                trailingScrollOffset
                ));
 }
コード例 #8
0
 public override float?estimateMaxScrollOffset(
     SliverConstraints constraints,
     int firstIndex,
     int lastIndex,
     float leadingScrollOffset,
     float trailingScrollOffset
     )
 {
     return(base.estimateMaxScrollOffset(
                constraints,
                firstIndex,
                lastIndex,
                leadingScrollOffset,
                trailingScrollOffset
                ) ?? gridDelegate.getLayout(constraints)
            .computeMaxScrollOffset(del.estimatedChildCount ?? 0));
 }
コード例 #9
0
        public override SliverGridLayout getLayout(SliverConstraints constraints)
        {
            D.assert(this._debugAssertIsValid());
            float usableCrossAxisExtent =
                constraints.crossAxisExtent - this.crossAxisSpacing * (this.crossAxisCount - 1);
            float childCrossAxisExtent = usableCrossAxisExtent / this.crossAxisCount;
            float childMainAxisExtent  = childCrossAxisExtent / this.childAspectRatio;

            return(new SliverGridRegularTileLayout(
                       crossAxisCount: this.crossAxisCount,
                       mainAxisStride: childMainAxisExtent + this.mainAxisSpacing,
                       crossAxisStride: childCrossAxisExtent + this.crossAxisSpacing,
                       childMainAxisExtent: childMainAxisExtent,
                       childCrossAxisExtent: childCrossAxisExtent,
                       reverseCrossAxis: AxisUtils.axisDirectionIsReversed(constraints.crossAxisDirection)
                       ));
        }
コード例 #10
0
        public override SliverGridLayout getLayout(SliverConstraints constraints)
        {
            const int columnCount = 7; // DateTime.daysPerWeek = 7
            float     tileWidth   = constraints.crossAxisExtent / columnCount;
            float     tileHeight  = Mathf.Min(
                DatePickerUtils._kDayPickerRowHeight,
                constraints.viewportMainAxisExtent / (DatePickerUtils._kMaxDayPickerRowCount + 1)
                );

            return(new SliverGridRegularTileLayout(
                       crossAxisCount: columnCount,
                       mainAxisStride: tileHeight,
                       crossAxisStride: tileWidth,
                       childMainAxisExtent: tileHeight,
                       childCrossAxisExtent: tileWidth,
                       reverseCrossAxis: AxisUtils.axisDirectionIsReversed(constraints.crossAxisDirection)
                       ));
        }
コード例 #11
0
        protected override void performLayout()
        {
            SliverConstraints constraints = this.constraints;

            D.assert(constraints.axisDirection == AxisDirection.down);
            D.assert(constraints.growthDirection == GrowthDirection.forward);
            float layoutExtent =
                (_hasLayoutExtent ? 1.0f : 0.0f) * _refreshIndicatorExtent;

            if (layoutExtent != layoutExtentOffsetCompensation)
            {
                geometry = new SliverGeometry(
                    scrollOffsetCorrection: layoutExtent - layoutExtentOffsetCompensation
                    );
                layoutExtentOffsetCompensation = layoutExtent;
            }
            bool  active             = constraints.overlap <0.0 || layoutExtent> 0.0;
            float overscrolledExtent =
                constraints.overlap < 0.0f ? constraints.overlap.abs() : 0.0f;

            child.layout(
                constraints.asBoxConstraints(
                    maxExtent: layoutExtent + overscrolledExtent
                    ),
                parentUsesSize: true
                );
            if (active)
            {
                geometry = new SliverGeometry(
                    scrollExtent: layoutExtent,
                    paintOrigin: -overscrolledExtent - constraints.scrollOffset,
                    paintExtent: Mathf.Max(
                        Mathf.Max(child.size.height, layoutExtent) - constraints.scrollOffset, 0.0f),
                    maxPaintExtent: Mathf.Max(
                        Mathf.Max(child.size.height, layoutExtent) - constraints.scrollOffset, 0.0f),
                    layoutExtent: Mathf.Max(layoutExtent - constraints.scrollOffset, 0.0f));
            }
            else
            {
                geometry = SliverGeometry.zero;
            }
        }
コード例 #12
0
        void _resolve()
        {
            if (_resolvedPadding != null && _lastResolvedConstraints == constraints)
            {
                return;
            }

            float paddingValue = constraints.viewportMainAxisExtent * viewportFraction;

            _lastResolvedConstraints = constraints;
            switch (constraints.axis)
            {
            case Axis.horizontal:
                _resolvedPadding = EdgeInsets.symmetric(horizontal: paddingValue);
                break;

            case Axis.vertical:
                _resolvedPadding = EdgeInsets.symmetric(vertical: paddingValue);
                break;
            }
        }
コード例 #13
0
 public abstract SliverGridLayout getLayout(SliverConstraints constraints);