cake_wallet/lib/src/widgets/primary_button.dart

212 lines
6.1 KiB
Dart
Raw Normal View History

2020-01-04 19:31:52 +00:00
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/palette.dart';
class PrimaryButton extends StatelessWidget {
const PrimaryButton(
{@required this.onPressed,
@required this.text,
@required this.color,
@required this.borderColor,
this.isDisabled = false,
this.onDisabledPressed});
2020-01-04 19:31:52 +00:00
2020-01-08 12:26:34 +00:00
final VoidCallback onPressed;
final VoidCallback onDisabledPressed;
2020-01-08 12:26:34 +00:00
final Color color;
final Color borderColor;
final String text;
final bool isDisabled;
2020-01-08 12:26:34 +00:00
2020-01-04 19:31:52 +00:00
@override
Widget build(BuildContext context) {
return ButtonTheme(
minWidth: double.infinity,
height: 56.0,
child: FlatButton(
onPressed: isDisabled
? (onDisabledPressed != null ? onDisabledPressed : null)
: onPressed,
color: isDisabled ? Colors.transparent : color,
2020-01-04 19:31:52 +00:00
shape: RoundedRectangleBorder(
side: BorderSide(color: borderColor),
borderRadius: BorderRadius.circular(10.0)),
child: Text(text,
style: TextStyle(
fontSize: 16.0,
color: isDisabled
? Palette.darkGrey
: Theme.of(context).primaryTextTheme.button.color)),
2020-01-04 19:31:52 +00:00
));
}
}
class LoadingPrimaryButton extends StatelessWidget {
const LoadingPrimaryButton(
{@required this.onPressed,
@required this.text,
@required this.color,
@required this.borderColor,
this.isDisabled = false,
this.isLoading = false});
2020-01-08 12:26:34 +00:00
final VoidCallback onPressed;
final Color color;
final Color borderColor;
final bool isLoading;
final bool isDisabled;
final String text;
2020-01-04 19:31:52 +00:00
@override
Widget build(BuildContext context) {
return ButtonTheme(
minWidth: double.infinity,
height: 56.0,
child: FlatButton(
onPressed: (isLoading || isDisabled) ? null : onPressed,
color: color,
shape: RoundedRectangleBorder(
side: BorderSide(color: borderColor),
borderRadius: BorderRadius.circular(10.0)),
child: isLoading
? CupertinoActivityIndicator(animating: true)
: Text(text,
style: TextStyle(
fontSize: 16.0,
color: Theme.of(context).primaryTextTheme.button.color)),
));
}
}
class PrimaryIconButton extends StatelessWidget {
const PrimaryIconButton({
@required this.onPressed,
@required this.iconData,
@required this.text,
@required this.color,
@required this.borderColor,
@required this.iconColor,
@required this.iconBackgroundColor,
});
2020-01-08 12:26:34 +00:00
final VoidCallback onPressed;
final IconData iconData;
final Color color;
final Color borderColor;
final Color iconColor;
final Color iconBackgroundColor;
final String text;
2020-01-04 19:31:52 +00:00
@override
Widget build(BuildContext context) {
return ButtonTheme(
minWidth: double.infinity,
height: 56.0,
child: FlatButton(
onPressed: onPressed,
color: color,
shape: RoundedRectangleBorder(
side: BorderSide(color: borderColor),
borderRadius: BorderRadius.circular(10.0)),
child: Stack(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
width: 28.0,
height: 56.0,
decoration: BoxDecoration(
shape: BoxShape.circle, color: iconBackgroundColor),
child: Icon(iconData, color: iconColor, size: 22.0),
),
],
),
Container(
height: 56.0,
child: Center(
child: Text(text,
style: TextStyle(
fontSize: 16.0,
2020-01-08 12:26:34 +00:00
color:
Theme.of(context).primaryTextTheme.button.color)),
2020-01-04 19:31:52 +00:00
),
)
],
),
));
}
}
class PrimaryImageButton extends StatelessWidget {
const PrimaryImageButton(
{@required this.onPressed,
@required this.image,
@required this.text,
@required this.color,
@required this.textColor});
2020-01-04 19:31:52 +00:00
2020-01-08 12:26:34 +00:00
final VoidCallback onPressed;
final Image image;
final Color color;
final Color textColor;
2020-01-08 12:26:34 +00:00
final String text;
2020-01-04 19:31:52 +00:00
@override
Widget build(BuildContext context) {
return ButtonTheme(
minWidth: double.infinity,
height: 52.0,
2020-01-04 19:31:52 +00:00
child: FlatButton(
onPressed: onPressed,
color: color,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(26.0)),
child:Center(
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
image,
SizedBox(width: 15),
Text(
text,
style: TextStyle(
fontSize: 15,
color: textColor
),
)
],
),
)
/*Row(
2020-01-04 19:31:52 +00:00
children: <Widget>[
Container(
width: 28.0,
height: 56.0,
decoration: BoxDecoration(
shape: BoxShape.circle, color: Colors.transparent),
child: image,
),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
height: 56.0,
child: Center(
2020-01-08 12:26:34 +00:00
child: Text(text,
style: TextStyle(
fontSize: 18.0,
color: Theme.of(context)
.primaryTextTheme
.button
.color)),
2020-01-04 19:31:52 +00:00
),
)
]))
],
),*/
2020-01-04 19:31:52 +00:00
));
}
}