import 'package:flutter/material.dart'; ///自定义按钮 ///包括loading功能 class CustomButton extends StatelessWidget { final Widget child; final VoidCallback? onPressed; final bool loading; final bool round; final bool disabled; const CustomButton({ super.key, required this.child, this.onPressed, this.loading = false, this.round = true, this.disabled = false, }); @override Widget build(BuildContext context) { ///自定义颜色 // switch (size) { // case ButtonSize.small: // height = 28; // loadingSize = 16; // fontSize = 12; // padding = const EdgeInsets.symmetric(horizontal: 12); // break; // case ButtonSize.large: // height = 48; // loadingSize = 24; // fontSize = 18; // padding = const EdgeInsets.symmetric(horizontal: 20); // break; // case ButtonSize.medium: // height = 45; // loadingSize = 15; // fontSize = 16; // padding = const EdgeInsets.symmetric(horizontal: 16); // break; // } void handClick() { if (!loading && !disabled) { onPressed?.call(); } } return Opacity( opacity: disabled ? 0.5 : 1, child: ElevatedButton( onPressed: handClick, style: ElevatedButton.styleFrom( shape: round ? const StadiumBorder() : RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Visibility( visible: loading, child: Container( margin: EdgeInsets.only(right: 8), child: SizedBox.square( dimension: 15, child: CircularProgressIndicator( color: Colors.white, strokeWidth: 2, ), ), ), ), child, ], ), ), ); } }