list_item.dart 1.24 KB
Newer Older
Adam Barth's avatar
Adam Barth committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// 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 'package:flutter/widgets.dart';

import 'ink_well.dart';

class ListItem extends StatelessComponent {
  ListItem({
    Key key,
    this.left,
    this.center,
    this.right,
    this.onTap,
    this.onLongPress
  }) : super(key: key) {
    assert(center != null);
  }

  final Widget left;
  final Widget center;
  final Widget right;
  final GestureTapCallback onTap;
  final GestureLongPressCallback onLongPress;

  Widget build(BuildContext context) {
    List<Widget> children = new List<Widget>();

    if (left != null) {
      children.add(new Container(
        margin: new EdgeDims.only(right: 16.0),
        width: 40.0,
        child: left
      ));
    }

    children.add(new Flexible(
      child: center
    ));

    if (right != null) {
      children.add(new Container(
Adam Barth's avatar
Adam Barth committed
44
        margin: new EdgeDims.only(left: 16.0),
Adam Barth's avatar
Adam Barth committed
45 46 47 48
        child: right
      ));
    }

49 50 51 52 53
    return new InkWell(
      onTap: onTap,
      onLongPress: onLongPress,
      child: new Padding(
        padding: const EdgeDims.symmetric(horizontal: 16.0),
54
        child: new Row(children: children)
Adam Barth's avatar
Adam Barth committed
55 56 57 58
      )
    );
  }
}