import 'package:flutter/material.dart'; import 'package:zap_stream_flutter/theme.dart'; class BasicButton extends StatelessWidget { final Widget? child; final BoxDecoration? decoration; final EdgeInsetsGeometry? padding; final EdgeInsetsGeometry? margin; final void Function(BuildContext)? onTap; final bool? disabled; const BasicButton( this.child, { super.key, this.decoration, this.padding, this.margin, this.onTap, this.disabled, }); static Widget text( String text, { BoxDecoration? decoration, EdgeInsetsGeometry? padding, EdgeInsetsGeometry? margin, void Function(BuildContext)? onTap, double? fontSize, bool? disabled, Icon? icon, }) { return BasicButton( Text.rich( TextSpan( style: TextStyle( color: Color.fromARGB(255, 255, 255, 255), fontSize: fontSize, fontWeight: FontWeight.bold, ), children: [ if (icon != null) WidgetSpan(child: icon, alignment: PlaceholderAlignment.middle), if (icon != null) TextSpan(text: " "), TextSpan(text: text), ], ), ), disabled: disabled, decoration: decoration, padding: padding ?? EdgeInsets.symmetric(vertical: 4, horizontal: 12), margin: margin, onTap: onTap, ); } @override Widget build(BuildContext context) { final defaultBr = BorderRadius.all(Radius.circular(100)); final inner = Container( padding: padding, margin: margin, decoration: decoration ?? BoxDecoration(color: LAYER_2, borderRadius: defaultBr), child: Center(child: child), ); return GestureDetector( onTap: () { if (!(disabled ?? false) && onTap != null) { onTap!(context); } }, child: (disabled ?? false) ? Opacity(opacity: 0.5, child: inner) : inner, ); } }