Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Side by Side Diff: sky/sdk/example/stocks/lib/stock_list.dart

Issue 1219933004: Make it harder to forget itemCount for FixedHeightScrollable (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 'package:sky/widgets/fixed_height_scrollable.dart'; 5 import 'package:sky/widgets/fixed_height_scrollable.dart';
6 import 'package:sky/widgets/basic.dart'; 6 import 'package:sky/widgets/basic.dart';
7 7
8 import 'stock_data.dart'; 8 import 'stock_data.dart';
9 import 'stock_row.dart'; 9 import 'stock_row.dart';
10 10
11 class Stocklist extends FixedHeightScrollable { 11 class Stocklist extends FixedHeightScrollable {
12 12
13 Stocklist({ 13 Stocklist({
14 String key, 14 String key,
15 this.stocks, 15 List<Stock> stocks,
16 this.query 16 this.query
Hixie 2015/07/07 15:25:13 do we still need to remember the query?
abarth-chromium 2015/07/07 15:26:21 Nope!
17 }) : super(itemHeight: StockRow.kHeight, key: key); 17 }) : super(itemHeight: StockRow.kHeight, key: key) {
18 if (query == null) {
19 filteredStocks = stocks;
20 } else {
21 RegExp regexp = new RegExp(query, caseSensitive: false);
22 filteredStocks = stocks
23 .where((stock) => stock.symbol.contains(regexp))
24 .toList(growable: false);
25 }
26 }
18 27
19 String query; 28 String query;
20 List<Stock> stocks; 29 List<Stock> filteredStocks;
30
31 int get itemCount => filteredStocks.length;
21 32
22 void syncFields(Stocklist source) { 33 void syncFields(Stocklist source) {
23 query = source.query; 34 query = source.query;
24 stocks = source.stocks; 35 filteredStocks = source.filteredStocks;
25 super.syncFields(source); 36 super.syncFields(source);
26 } 37 }
27 38
28 List<Widget> buildItems(int start, int count) { 39 List<Widget> buildItems(int start, int count) {
29 var filteredStocks = stocks.where((stock) {
30 return query == null ||
31 stock.symbol.contains(new RegExp(query, caseSensitive: false));
32 });
33 itemCount = filteredStocks.length;
34 return filteredStocks 40 return filteredStocks
35 .skip(start) 41 .skip(start)
36 .take(count) 42 .take(count)
37 .map((stock) => new StockRow(stock: stock)) 43 .map((stock) => new StockRow(stock: stock))
38 .toList(growable: false); 44 .toList(growable: false);
39 } 45 }
40 } 46 }
OLDNEW
« no previous file with comments | « sky/sdk/example/demo_launcher/lib/main.dart ('k') | sky/sdk/lib/widgets/fixed_height_scrollable.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698