parent
44239e472f
commit
27fd4e306c
@ -0,0 +1,56 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:aku_community_manager/ui/widgets/common/aku_cupertino_button.dart';
|
||||
import 'package:aku_community_manager/ui/widgets/common/aku_material_button.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AkuButton extends StatefulWidget {
|
||||
@required
|
||||
final Widget child;
|
||||
final double height;
|
||||
final double radius;
|
||||
final EdgeInsets padding;
|
||||
@required
|
||||
final VoidCallback onPressed;
|
||||
final Color color;
|
||||
final double width;
|
||||
AkuButton({
|
||||
Key key,
|
||||
this.child,
|
||||
this.height = 0,
|
||||
this.radius = 0,
|
||||
this.onPressed,
|
||||
this.padding = EdgeInsets.zero,
|
||||
this.color = Colors.transparent,
|
||||
this.width = 0,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AkuButtonState createState() => _AkuButtonState();
|
||||
}
|
||||
|
||||
class _AkuButtonState extends State<AkuButton> {
|
||||
bool get isIOS => Platform.isIOS;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return isIOS
|
||||
? AkuCupertinoButton(
|
||||
onPressed: widget.onPressed,
|
||||
child: widget.child,
|
||||
radius: widget.radius,
|
||||
minHeight: widget.height,
|
||||
padding: widget.padding,
|
||||
color: widget.color,
|
||||
minWidth: widget.width,
|
||||
)
|
||||
: AkuMaterialButton(
|
||||
onPressed: widget.onPressed,
|
||||
child: widget.child,
|
||||
radius: widget.radius,
|
||||
height: widget.height,
|
||||
padding: widget.padding,
|
||||
color: widget.color,
|
||||
minWidth: widget.width,
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AkuCupertinoButton extends CupertinoButton {
|
||||
final VoidCallback onPressed;
|
||||
final Widget child;
|
||||
final Color color;
|
||||
final EdgeInsetsGeometry padding;
|
||||
final double radius;
|
||||
final double minHeight;
|
||||
final Color nullColor;
|
||||
final double minWidth;
|
||||
|
||||
AkuCupertinoButton({
|
||||
Key key,
|
||||
@required this.onPressed,
|
||||
@required this.child,
|
||||
this.color = Colors.transparent,
|
||||
this.padding = EdgeInsets.zero,
|
||||
this.radius = 0,
|
||||
this.minHeight = 0,
|
||||
this.nullColor,
|
||||
this.minWidth,
|
||||
}) : super(
|
||||
key: key,
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
constraints: BoxConstraints(minWidth: minWidth),
|
||||
child: child,
|
||||
),
|
||||
color: color,
|
||||
onPressed: onPressed,
|
||||
padding: padding,
|
||||
borderRadius: BorderRadius.circular(radius),
|
||||
minSize: minHeight,
|
||||
disabledColor: nullColor ?? color.withAlpha(170),
|
||||
);
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AkuMaterialButton extends MaterialButton {
|
||||
final VoidCallback onPressed;
|
||||
final double elevation;
|
||||
final double disabledElevation;
|
||||
final double focusElevation;
|
||||
final double highlightElevation;
|
||||
final double hoverElevation;
|
||||
final double height;
|
||||
final double minWidth;
|
||||
final double radius;
|
||||
final EdgeInsets padding;
|
||||
final Color color;
|
||||
final Color nullColor;
|
||||
|
||||
final Widget child;
|
||||
AkuMaterialButton({
|
||||
Key key,
|
||||
@required this.onPressed,
|
||||
this.elevation = 0,
|
||||
this.disabledElevation = 0,
|
||||
this.focusElevation = 0,
|
||||
this.highlightElevation = 0,
|
||||
this.hoverElevation = 0,
|
||||
this.height = 48,
|
||||
this.minWidth = 0,
|
||||
this.radius = 0,
|
||||
this.padding = EdgeInsets.zero,
|
||||
@required this.child,
|
||||
this.color = Colors.transparent,
|
||||
this.nullColor = Colors.transparent,
|
||||
}) : super(
|
||||
key: key,
|
||||
onPressed: onPressed,
|
||||
elevation: elevation,
|
||||
disabledElevation: disabledElevation,
|
||||
focusElevation: focusElevation,
|
||||
highlightElevation: highlightElevation,
|
||||
hoverElevation: hoverElevation,
|
||||
height: height,
|
||||
minWidth: minWidth,
|
||||
padding: padding,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(radius),
|
||||
),
|
||||
child: child,
|
||||
color: color,
|
||||
disabledColor: nullColor,
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
);
|
||||
}
|
Loading…
Reference in new issue