import 'package:flutter/material.dart'; import '../core/app_colors.dart'; class AppGradientText extends StatelessWidget { final String text; final TextStyle style; final Gradient gradient; final TextAlign? textAlign; const AppGradientText( this.text, { super.key, required this.style, this.gradient = AppColors.primaryGradient, this.textAlign, }); @override Widget build(BuildContext context) { return ShaderMask( shaderCallback: gradient.createShader, blendMode: BlendMode.srcIn, child: Text( text, textAlign: textAlign, style: style.copyWith(color: Colors.white), ), ); } } class AppGradientIcon extends StatelessWidget { final IconData icon; final double size; final Gradient gradient; const AppGradientIcon({ super.key, required this.icon, required this.size, this.gradient = AppColors.primaryGradient, }); @override Widget build(BuildContext context) { return ShaderMask( shaderCallback: gradient.createShader, blendMode: BlendMode.srcIn, child: Icon(icon, size: size, color: Colors.white), ); } } class AppGradientOutlineButton extends StatelessWidget { final String label; final VoidCallback onTap; final Gradient gradient; const AppGradientOutlineButton({ super.key, required this.label, required this.onTap, this.gradient = AppColors.primaryGradient, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: onTap, child: Container( height: 50, decoration: BoxDecoration( gradient: gradient, borderRadius: BorderRadius.circular(18), ), padding: const EdgeInsets.all(1.2), child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(17), ), child: AppGradientText( label, gradient: gradient, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600), ), ), ), ); } }