Files
me.elcaju/lib/widgets/common/secondary_button.dart
T
2026-02-05 19:41:34 -06:00

83 lines
2.5 KiB
Dart

import 'package:flutter/material.dart';
import '../../core/constants/colors.dart';
import '../../core/constants/dimensions.dart';
/// Botón secundario con efecto glass
/// Transparente con borde naranja sutil
class SecondaryButton extends StatelessWidget {
final String text;
final VoidCallback? onPressed;
final bool isLoading;
final IconData? icon;
final double? width;
final double? height;
const SecondaryButton({
super.key,
required this.text,
this.onPressed,
this.isLoading = false,
this.icon,
this.width,
this.height,
});
@override
Widget build(BuildContext context) {
return Container(
width: width ?? double.infinity,
height: height ?? AppDimensions.buttonHeight,
decoration: BoxDecoration(
color: Colors.white.withValues(alpha: 0.05),
borderRadius: BorderRadius.circular(AppDimensions.buttonBorderRadius),
border: Border.all(
color: AppColors.primaryAction.withValues(alpha: 0.3),
width: 1,
),
),
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: isLoading ? null : onPressed,
borderRadius: BorderRadius.circular(AppDimensions.buttonBorderRadius),
child: Center(
child: isLoading
? SizedBox(
width: 24,
height: 24,
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.primaryAction.withValues(alpha: 0.8),
),
),
)
: Row(
mainAxisSize: MainAxisSize.min,
children: [
if (icon != null) ...[
Icon(
icon,
color: Colors.white,
size: 20,
),
const SizedBox(width: 8),
],
Text(
text,
style: const TextStyle(
fontFamily: 'Inter',
fontSize: 16,
fontWeight: FontWeight.w600,
color: Colors.white,
),
),
],
),
),
),
),
);
}
}