// ignore_for_file: file_names import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:astral/utils/app_info.dart'; class InfoPage extends StatelessWidget { const InfoPage({super.key}); @override Widget build(BuildContext context) { return SingleChildScrollView( child: Center( child: Padding( padding: const EdgeInsets.all(20.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // 静态图标 Container( height: 110, width: 110, decoration: BoxDecoration( shape: BoxShape.circle, color: Theme.of(context).colorScheme.primary, boxShadow: [ BoxShadow( color: Theme.of(context) .colorScheme .primary .withOpacity(0.5), blurRadius: 15, spreadRadius: 1, ), ], ), child: Center( child: Icon( Icons.games, size: 50, color: Theme.of(context).colorScheme.onPrimary, ), ), ), const SizedBox(height: 20), // 应用名称 Text( 'ASTRAL', style: Theme.of(context).textTheme.headlineMedium?.copyWith( fontWeight: FontWeight.bold, letterSpacing: 2.0, color: Theme.of(context).colorScheme.primary, ), ), const SizedBox(height: 8), // 版本号 Text( AppInfoUtil.getVersion(), style: Theme.of(context).textTheme.bodyLarge, ), const SizedBox(height: 20), // 静态卡片 _buildCard( context, '特别鸣谢', '特别感谢EasyTier作者所做的工作和帮助,为本项目提供了重要的技术支持。如果您有功能需求或遇到bug,欢迎加入我们的QQ群获取帮助和了解最新动态。', Icons.favorite, ), // 合并后的卡片 const SizedBox(height: 30), // 静态按钮 ElevatedButton.icon( icon: const Icon(Icons.group_add), label: const Text('加入QQ群'), style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), ), elevation: 5, ), onPressed: () async { final url = 'https://qm.qq.com/q/ErscyNPTzO'; if (await canLaunchUrl(Uri.parse(url))) { await launchUrl(Uri.parse(url)); } else { // 无法打开链接时显示提示 if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('无法打开QQ群链接')), ); } } }, ), const SizedBox(height: 20), // 版权信息 Text( '© ${DateTime.now().year} ASTRAL Team', style: Theme.of(context).textTheme.bodySmall?.copyWith( color: Theme.of(context) .colorScheme .onSurface .withOpacity(0.6), ), ), ], ), ), ), ); } Widget _buildCard( BuildContext context, String title, String content, IconData icon, ) { return Card( elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary.withOpacity(0.1), shape: BoxShape.circle, ), child: Icon( icon, color: Theme.of(context).colorScheme.primary, size: 30, ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: Theme.of(context).textTheme.titleLarge?.copyWith( fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.primary, ), ), const SizedBox(height: 8), Text( content, style: Theme.of(context).textTheme.bodyMedium, ), ], ), ), ], ), ), ); } }