import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:maibu_satabot_v2/core/localization/app_localizations.dart'; import 'package:maibu_satabot_v2/core/router/route_paths.dart'; class QuickActionsGrid extends StatelessWidget { const QuickActionsGrid({super.key}); @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Row( children: [ _buildActionItem( context: context, icon: Icons.videogame_asset_outlined, labelKey: 'home.remote_control', iconColor: Colors.blue, onTap: () => context.push(RoutePaths.remoteControl), ), _buildActionItem( context: context, icon: Icons.near_me_outlined, labelKey: 'home.route_plan', iconColor: Colors.purple, onTap: () => context.push(RoutePaths.routePlan), ), _buildActionItem( context: context, icon: Icons.insights_rounded, labelKey: 'home.machine_status', iconColor: Colors.orange, onTap: () => context.push(RoutePaths.runningStatus), ), ], ), ); } // 💡 改造后的构建函数,支持命名参数和点击事件 Widget _buildActionItem({ required BuildContext context, required IconData icon, required String labelKey, required Color iconColor, required VoidCallback onTap, }) { return Expanded( child: Container( margin: const EdgeInsets.symmetric(horizontal: 4), // 💡 使用 Material 和 InkWell 组合来实现点击效果 child: Material( color: Colors.white, borderRadius: BorderRadius.circular(20), child: InkWell( onTap: onTap, borderRadius: BorderRadius.circular(20), // 确保水波纹不超出圆角 child: Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: Column( children: [ Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: iconColor.withOpacity(0.1), borderRadius: BorderRadius.circular(16), ), child: Icon(icon, color: iconColor), ), const SizedBox(height: 8), Text( AppLocalizations.of(context).translate(labelKey), style: const TextStyle( fontSize: 13, fontWeight: FontWeight.w500, ), ), ], ), ), ), ), ), ); } }