| // 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. |
| |
| part of fitness; |
| |
| typedef void FitnessItemHandler(FitnessItem item); |
| |
| const double kFitnessItemHeight = 79.0; |
| |
| abstract class FitnessItem { |
| FitnessItem({ this.when }) { |
| assert(when != null); |
| } |
| final DateTime when; |
| |
| // TODO(jackson): Internationalize |
| String get displayDate => "${when.year.toString()}-${when.month.toString().padLeft(2,'0')}-${when.day.toString().padLeft(2,'0')}"; |
| |
| FitnessItemRow toRow({ FitnessItemHandler onDismissed }); |
| } |
| |
| abstract class FitnessItemRow extends Component { |
| |
| FitnessItemRow({ FitnessItem item, this.onDismissed }) |
| : this.item = item, |
| super(key: new Key(item.when.toString())) { |
| assert(onDismissed != null); |
| } |
| |
| final FitnessItem item; |
| final FitnessItemHandler onDismissed; |
| |
| Widget buildContent(); |
| |
| Widget build() { |
| return new Dismissable( |
| onDismissed: () => onDismissed(item), |
| child: new Card( |
| child: new Container( |
| height: kFitnessItemHeight, |
| padding: const EdgeDims.all(8.0), |
| child: buildContent() |
| ) |
| ) |
| ); |
| } |
| } |