Index: sky/framework/components/fixed_height_scrollable.dart |
diff --git a/sky/framework/components/fixed_height_scrollable.dart b/sky/framework/components/fixed_height_scrollable.dart |
deleted file mode 100644 |
index e54ebafa2a9c4561a215b87ace49c33da2f55e68..0000000000000000000000000000000000000000 |
--- a/sky/framework/components/fixed_height_scrollable.dart |
+++ /dev/null |
@@ -1,106 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-import '../animation/scroll_behavior.dart'; |
-import '../debug/tracing.dart'; |
-import '../fn.dart'; |
-import 'dart:math' as math; |
-import 'dart:async'; |
-import 'scrollable.dart'; |
- |
-abstract class FixedHeightScrollable extends Scrollable { |
- static final Style _style = new Style(''' |
- overflow: hidden; |
- position: relative; |
- will-change: transform;''' |
- ); |
- |
- static final Style _scrollAreaStyle = new Style(''' |
- position:relative; |
- will-change: transform;''' |
- ); |
- |
- FixedHeightScrollable({ |
- Object key |
- }) : super(key: key); |
- |
- ScrollBehavior createScrollBehavior() => new OverscrollBehavior(); |
- OverscrollBehavior get scrollBehavior => super.scrollBehavior as OverscrollBehavior; |
- |
- double _height = 0.0; |
- double _itemHeight; |
- |
- int _itemCount = 0; |
- int get itemCount => _itemCount; |
- void set itemCount (int value) { |
- if (_itemCount != value) { |
- _itemCount = value; |
- if (_itemHeight != null) |
- scrollBehavior.contentsHeight = _itemHeight * _itemCount; |
- } |
- } |
- |
- void _measureHeights() { |
- trace('FixedHeightScrollable::_measureHeights', () { |
- if (_itemHeight != null) |
- return; |
- var root = getRoot(); |
- if (root == null) |
- return; |
- var item = root.firstChild.firstChild; |
- if (item == null) |
- return; |
- setState(() { |
- _height = root.height; |
- assert(_height > 0); |
- _itemHeight = item.height; |
- assert(_itemHeight > 0); |
- scrollBehavior.containerHeight = _height; |
- scrollBehavior.contentsHeight = _itemHeight * _itemCount; |
- }); |
- }); |
- } |
- |
- UINode buildContent() { |
- var itemNumber = 0; |
- var drawCount = 1; |
- var transformStyle = ''; |
- |
- if (_itemHeight == null) |
- new Future.microtask(_measureHeights); |
- |
- if (_height > 0.0 && _itemHeight != null) { |
- if (scrollOffset < 0.0) { |
- double visibleHeight = _height + scrollOffset; |
- drawCount = (visibleHeight / _itemHeight).round() + 1; |
- transformStyle = |
- 'transform: translateY(${(-scrollOffset).toStringAsFixed(2)}px)'; |
- } else { |
- drawCount = (_height / _itemHeight).ceil() + 1; |
- double alignmentDelta = -scrollOffset % _itemHeight; |
- if (alignmentDelta != 0.0) |
- alignmentDelta -= _itemHeight; |
- |
- double drawStart = scrollOffset + alignmentDelta; |
- itemNumber = math.max(0, (drawStart / _itemHeight).floor()); |
- |
- transformStyle = |
- 'transform: translateY(${(alignmentDelta).toStringAsFixed(2)}px)'; |
- } |
- } |
- |
- return new Container( |
- style: _style, |
- children: [ |
- new Container( |
- style: _scrollAreaStyle, |
- inlineStyle: transformStyle, |
- children: buildItems(itemNumber, drawCount) |
- ) |
- ] |
- ); |
- } |
- |
- List<UINode> buildItems(int start, int count); |
-} |