import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'dart:math' as math; import '../../controllers/add_subscription_controller.dart'; /// 구독 추가 화면의 App Bar class AddSubscriptionAppBar extends StatelessWidget implements PreferredSizeWidget { final AddSubscriptionController controller; final double scrollOffset; final VoidCallback onScanSMS; const AddSubscriptionAppBar({ super.key, required this.controller, required this.scrollOffset, required this.onScanSMS, }); @override Size get preferredSize => const Size.fromHeight(60); @override Widget build(BuildContext context) { final double appBarOpacity = math.max(0, math.min(1, scrollOffset / 100)); return Container( decoration: BoxDecoration( color: Colors.white.withOpacity(appBarOpacity), boxShadow: appBarOpacity > 0.6 ? [ BoxShadow( color: Colors.black.withOpacity(0.1 * appBarOpacity), spreadRadius: 1, blurRadius: 8, offset: const Offset(0, 4), ) ] : null, ), child: SafeArea( child: AppBar( title: Text( '구독 추가', style: TextStyle( fontFamily: 'Montserrat', fontSize: 24, fontWeight: FontWeight.w800, letterSpacing: -0.5, color: const Color(0xFF1E293B), shadows: appBarOpacity > 0.6 ? [ Shadow( color: Colors.black.withOpacity(0.2), offset: const Offset(0, 1), blurRadius: 2, ) ] : null, ), ), elevation: 0, backgroundColor: Colors.transparent, actions: [ if (!kIsWeb) controller.isLoading ? const Padding( padding: EdgeInsets.only(right: 16.0), child: Center( child: SizedBox( width: 24, height: 24, child: CircularProgressIndicator( strokeWidth: 2, valueColor: AlwaysStoppedAnimation( Color(0xFF3B82F6)), ), ), ), ) : IconButton( icon: const FaIcon( FontAwesomeIcons.message, size: 20, color: Color(0xFF3B82F6), ), onPressed: onScanSMS, tooltip: 'SMS에서 구독 정보 스캔', ), ], ), ), ); } }