| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:math' as math; | 5 import 'dart:math' as math; |
| 6 | 6 |
| 7 import 'fixed_height_scrollable.dart'; | 7 import 'fixed_height_scrollable.dart'; |
| 8 import 'basic.dart'; | 8 import 'basic.dart'; |
| 9 | 9 |
| 10 typedef Widget ItemBuilder<T>(T item); | 10 typedef Widget ItemBuilder<T>(T item); |
| 11 | 11 |
| 12 class ScrollableList<T> extends FixedHeightScrollable { | 12 class ScrollableList<T> extends FixedHeightScrollable { |
| 13 ScrollableList({ | 13 ScrollableList({ |
| 14 String key, | 14 String key, |
| 15 this.items, | 15 this.items, |
| 16 this.itemBuilder, | 16 this.itemBuilder, |
| 17 double itemHeight, | 17 double itemHeight, |
| 18 EdgeDims padding | 18 EdgeDims padding |
| 19 }) : super(key: key, itemHeight: itemHeight, padding: padding); | 19 }) : super(key: key, itemHeight: itemHeight, padding: padding); |
| 20 | 20 |
| 21 List<T> items; | 21 List<T> items; |
| 22 ItemBuilder<T> itemBuilder; | 22 ItemBuilder<T> itemBuilder; |
| 23 | 23 |
| 24 @override |
| 24 void syncFields(ScrollableList<T> source) { | 25 void syncFields(ScrollableList<T> source) { |
| 25 items = source.items; | 26 items = source.items; |
| 26 itemBuilder = source.itemBuilder; | 27 itemBuilder = source.itemBuilder; |
| 27 super.syncFields(source); | 28 super.syncFields(source); |
| 28 } | 29 } |
| 29 | 30 |
| 31 @override |
| 30 int get itemCount => items.length; | 32 int get itemCount => items.length; |
| 31 | 33 |
| 34 @override |
| 32 List<Widget> buildItems(int start, int count) { | 35 List<Widget> buildItems(int start, int count) { |
| 33 List<Widget> result = new List<Widget>(); | 36 List<Widget> result = new List<Widget>(); |
| 34 int end = math.min(start + count, items.length); | 37 int end = math.min(start + count, items.length); |
| 35 for (int i = start; i < end; ++i) | 38 for (int i = start; i < end; ++i) |
| 36 result.add(itemBuilder(items[i])); | 39 result.add(itemBuilder(items[i])); |
| 37 return result; | 40 return result; |
| 38 } | 41 } |
| 39 } | 42 } |
| OLD | NEW |