blob: 34a47b004ae915b864da1109dd29905b3ca503c4 [file] [log] [blame]
// 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:sky/widgets/basic.dart';
import 'package:sky/widgets/button_base.dart';
import 'package:sky/widgets/ink_well.dart';
import 'package:sky/widgets/material.dart';
// Rather than using this class directly, please use FlatButton or RaisedButton.
abstract class MaterialButton extends ButtonBase {
MaterialButton({
Key key,
this.child,
this.enabled: true,
this.onPressed
}) : super(key: key);
Widget child;
bool enabled;
Function onPressed;
void syncConstructorArguments(MaterialButton source) {
child = source.child;
enabled = source.enabled;
onPressed = source.onPressed;
super.syncConstructorArguments(source);
}
Color get color;
int get level;
Widget buildContent() {
Widget contents = new Container(
padding: new EdgeDims.symmetric(horizontal: 8.0),
child: new Center(child: child) // TODO(ianh): figure out a way to compell the child to have gray text when disabled...
);
return new Listener(
child: new Container(
height: 36.0,
constraints: new BoxConstraints(minWidth: 88.0),
margin: new EdgeDims.all(8.0),
child: new Material(
type: MaterialType.button,
child: enabled ? new InkWell(child: contents) : contents,
level: level,
color: color
)
),
onGestureTap: (_) { if (onPressed != null && enabled) onPressed(); }
);
}
}