import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/app_provider.dart'; /// 观影状态选择栏 - 现代胶囊式设计 class MovieStatusBar extends StatelessWidget { const MovieStatusBar({super.key}); @override Widget build(BuildContext context) { return Consumer( builder: (context, provider, child) { return Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), decoration: const BoxDecoration( color: Colors.white, border: Border( bottom: BorderSide(color: Color(0xFFE5E5E5), width: 0.5), ), ), child: Container( padding: const EdgeInsets.all(4), decoration: BoxDecoration( color: const Color(0xFFF5F5F5), borderRadius: BorderRadius.circular(24), ), child: Row( children: [ _buildStatusItem( label: '已看', icon: Icons.check_circle_outline, isSelected: provider.movieStatusIndex == 0, onTap: () => provider.setMovieStatusIndex(0), ), _buildStatusItem( label: '在看', icon: Icons.play_circle_outline, isSelected: provider.movieStatusIndex == 1, onTap: () => provider.setMovieStatusIndex(1), ), _buildStatusItem( label: '想看', icon: Icons.bookmark_outline, isSelected: provider.movieStatusIndex == 2, onTap: () => provider.setMovieStatusIndex(2), ), ], ), ), ); }, ); } /// 构建状态项 Widget _buildStatusItem({ required String label, required IconData icon, required bool isSelected, required VoidCallback onTap, }) { return Expanded( child: GestureDetector( onTap: onTap, child: AnimatedContainer( duration: const Duration(milliseconds: 200), curve: Curves.easeInOut, padding: const EdgeInsets.symmetric(vertical: 10), decoration: BoxDecoration( color: isSelected ? const Color(0xFF1A1A1A) : Colors.transparent, borderRadius: BorderRadius.circular(20), boxShadow: isSelected ? [ BoxShadow( color: Colors.black.withValues(alpha: 0.1), blurRadius: 8, offset: const Offset(0, 2), ), ] : null, ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( icon, size: 16, color: isSelected ? Colors.white : const Color(0xFF666666), ), const SizedBox(width: 6), Text( label, style: TextStyle( fontSize: 13, fontWeight: isSelected ? FontWeight.w600 : FontWeight.w500, color: isSelected ? Colors.white : const Color(0xFF666666), ), ), ], ), ), ), ); } }