import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../controllers/profile_controller.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import '../../../core/widgets/common_bottom_nav.dart'; import '../../../data/services/audio_service.dart'; class ProfileView extends GetView { const ProfileView({Key? key}) : super(key: key); Widget _buildMenuItem({ required String title, required IconData icon, String? subtitle, required VoidCallback onTap, }) { return ListTile( leading: Icon(icon, size: 24.sp, color: Colors.grey[700]), title: Text( title, style: TextStyle( fontSize: 16.sp, fontWeight: FontWeight.w500, ), ), subtitle: subtitle != null ? Text( subtitle, style: TextStyle( fontSize: 14.sp, color: Colors.grey[600], ), ) : null, trailing: Icon( Icons.chevron_right, size: 24.sp, color: Colors.grey[400], ), onTap: onTap, ); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: AppBar( backgroundColor: Colors.white, elevation: 0, title: Text( '设置'.tr, style: TextStyle( fontSize: 17.sp, fontWeight: FontWeight.w600, color: Colors.black, ), ), centerTitle: true, ), body: ListView( children: [ SizedBox(height: 12.h), const Divider(), _buildMenuItem( title: '关于'.tr, icon: Icons.info_outline, onTap: () { // TODO: 实现关于页面 }, ), const Divider(), _buildMenuItem( title: '检查更新'.tr, icon: Icons.system_update, onTap: () { // TODO: 实现检查更新 }, ), const Divider(), _buildMenuItem( title: '清除缓存'.tr, icon: Icons.cleaning_services_outlined, onTap: () { // TODO: 实现清除缓存 }, ), const Divider(), _buildMenuItem( title: '测试媒体按钮事件'.tr, icon: Icons.headset, subtitle: '手动触发媒体按钮事件,用于测试蓝牙耳机按键功能', onTap: () { try { // 获取 AudioServiceManager 实例并触发媒体按钮事件 final audioService = Get.find(); audioService.triggerMediaButtonEvent(); // 显示成功提示 ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('已触发媒体按钮事件,请查看日志'), duration: Duration(seconds: 2), ), ); } catch (e) { // 显示错误提示 ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('触发媒体按钮事件失败: $e'), backgroundColor: Colors.red, duration: Duration(seconds: 3), ), ); } }, ), ], ), bottomNavigationBar: const CommonBottomNav(currentIndex: 2), ); } }