import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../config/app_config.dart'; import '../../../constants/app_constants.dart'; /// 时间: 2026-03-26 /// 功能: 了解我们页面 /// 介绍: 展示开发者信息、团队信息、官网和备案号 /// 最新变化: 新建页面 class LearnUsPage extends StatelessWidget { const LearnUsPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF5F5F5), appBar: AppBar( title: Text( '了解我们', style: TextStyle( color: AppConstants.primaryColor, fontWeight: FontWeight.bold, ), ), backgroundColor: Colors.white, elevation: 0, centerTitle: true, leading: IconButton( icon: Icon(Icons.arrow_back, color: AppConstants.primaryColor), onPressed: () => Navigator.of(context).pop(), ), ), body: ListView( padding: const EdgeInsets.all(16), children: [ _buildHeaderCard(), const SizedBox(height: 16), _buildOfficialSiteCard(), const SizedBox(height: 16), _buildQQGroupCard(context), const SizedBox(height: 16), _buildDeveloperCard(context), const SizedBox(height: 16), _buildTeamCard(), const SizedBox(height: 16), _buildIcpCard(context), const SizedBox(height: 24), _buildBottomIndicator(), ], ), ); } Widget _buildHeaderCard() { return Container( padding: const EdgeInsets.all(24), decoration: BoxDecoration( gradient: LinearGradient( colors: const [ Color.fromARGB(255, 143, 73, 228), Color(0xFF6200EE), Color(0xFF3700B3), ], begin: Alignment.topLeft, end: Alignment.bottomRight, ), borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: AppConstants.primaryColor.withValues(alpha: 0.3), blurRadius: 12, offset: const Offset(0, 4), ), ], ), child: Row( children: [ Container( width: 70, height: 70, decoration: BoxDecoration( color: Colors.white.withValues(alpha: 0.2), borderRadius: BorderRadius.circular(18), ), child: const Center( child: Text('📖', style: TextStyle(fontSize: 36)), ), ), const SizedBox(width: 20), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '情景诗词', style: TextStyle( fontSize: 26, fontWeight: FontWeight.bold, color: Colors.white, ), ), const SizedBox(height: 6), Text( '在诗词里旅行,在文化中生长', style: TextStyle( fontSize: 13, color: Colors.white.withValues(alpha: 0.85), ), ), const SizedBox(height: 12), Container( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 6, ), decoration: BoxDecoration( color: Colors.white.withValues(alpha: 0.2), borderRadius: BorderRadius.circular(16), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Icon( Icons.code, size: 14, color: Colors.white.withValues(alpha: 0.9), ), const SizedBox(width: 6), Text( '版本 ${AppConfig.appVersion}', style: const TextStyle( fontSize: 12, color: Colors.white, ), ), ], ), ), ], ), ), ], ), ); } Widget _buildOfficialSiteCard() { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 2), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.blue.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Icon( Icons.language, color: Colors.blue[700], size: 20, ), ), const SizedBox(width: 12), const Text( '官方网站', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), ], ), ), const Divider(height: 1), Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '访问我们的官方网站了解更多信息', style: TextStyle(fontSize: 13, color: Colors.grey), ), const SizedBox(height: 12), Container( width: double.infinity, padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.grey[50], borderRadius: BorderRadius.circular(8), border: Border.all( color: Colors.grey.withValues(alpha: 0.2), ), ), child: Row( children: [ Icon( Icons.link, size: 16, color: AppConstants.primaryColor, ), const SizedBox(width: 8), Expanded( child: Text( 'https://poe.vogov.cn/app.html', style: TextStyle( fontSize: 14, color: AppConstants.primaryColor, ), ), ), ], ), ), ], ), ), ], ), ); } Widget _buildQQGroupCard(BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 2), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.blue.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Icon(Icons.group, color: Colors.blue[700], size: 20), ), const SizedBox(width: 12), const Text( 'QQ交流群', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), ], ), ), const Divider(height: 1), Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '加入我们的QQ交流群,与其他诗词爱好者一起交流', style: TextStyle(fontSize: 13, color: Colors.grey), ), const SizedBox(height: 12), InkWell( onTap: () => _copyQQGroupNumber(context), borderRadius: BorderRadius.circular(8), child: Container( width: double.infinity, padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.grey[50], borderRadius: BorderRadius.circular(8), border: Border.all( color: AppConstants.primaryColor.withValues(alpha: 0.3), ), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.content_copy, size: 16, color: AppConstants.primaryColor, ), const SizedBox(width: 8), Text( '271129018', style: TextStyle( fontSize: 14, fontWeight: FontWeight.w600, color: AppConstants.primaryColor, ), ), ], ), ), ), const SizedBox(height: 8), Text( '💡 点击群号可复制', style: TextStyle(fontSize: 12, color: Colors.grey[500]), ), ], ), ), ], ), ); } void _copyQQGroupNumber(BuildContext context) { Clipboard.setData(const ClipboardData(text: '271129018')); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Row( children: [ Icon(Icons.check_circle, color: Colors.white, size: 20), SizedBox(width: 8), Text('QQ群号已复制到剪贴板'), ], ), backgroundColor: AppConstants.primaryColor, behavior: SnackBarBehavior.floating, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), duration: const Duration(seconds: 2), ), ); } Widget _buildDeveloperCard(BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 2), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.green.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Icon( Icons.business, color: Colors.green[700], size: 20, ), ), const SizedBox(width: 12), const Text( '开发者', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), ], ), ), const Divider(height: 1), Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( width: 50, height: 50, decoration: BoxDecoration( gradient: LinearGradient( colors: [ AppConstants.primaryColor.withValues(alpha: 0.1), AppConstants.primaryColor.withValues(alpha: 0.05), ], ), borderRadius: BorderRadius.circular(12), ), child: const Center( child: Text('🏢', style: TextStyle(fontSize: 24)), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '微风暴工作室', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Text( '专注文字文化领域', style: TextStyle(fontSize: 13, color: Colors.grey[600]), ), ], ), ), ], ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Row( children: [ Container( width: 40, height: 40, decoration: BoxDecoration( gradient: LinearGradient( colors: [ Colors.blue.withValues(alpha: 0.1), Colors.blue.withValues(alpha: 0.05), ], ), borderRadius: BorderRadius.circular(8), ), child: const Center( child: Icon(Icons.email, color: Colors.blue, size: 20), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '商务合作&侵权申诉&联系我们', style: TextStyle( fontSize: 14, fontWeight: FontWeight.w500, ), ), const SizedBox(height: 2), const Text( '2821981550@qq.com', style: TextStyle( fontSize: 15, color: Colors.blue, decoration: TextDecoration.underline, ), ), ], ), ), ], ), ), Padding( padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), child: Row( children: [ Container( width: 50, height: 50, decoration: BoxDecoration( gradient: LinearGradient( colors: [ const Color(0xFF07C160).withValues(alpha: 0.1), const Color(0xFF07C160).withValues(alpha: 0.05), ], ), borderRadius: BorderRadius.circular(12), ), child: const Center( child: Text('💬', style: TextStyle(fontSize: 24)), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( '微信公众号', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Container( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 6, ), decoration: BoxDecoration( color: const Color(0xFF07C160).withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ const Icon( Icons.search, size: 16, color: Color(0xFF07C160), ), const SizedBox(width: 6), const Text( '微风暴', style: TextStyle( fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xFF07C160), ), ), const SizedBox(width: 8), GestureDetector( onTap: () { Clipboard.setData( const ClipboardData(text: '微风暴'), ); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('已复制到剪贴板'), duration: Duration(seconds: 2), ), ); }, child: Icon( Icons.content_copy, size: 16, color: const Color( 0xFF07C160, ).withValues(alpha: 0.8), ), ), ], ), ), ], ), ), ], ), ), ], ), ); } Widget _buildTeamCard() { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 2), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.purple.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Icon(Icons.group, color: Colors.purple[700], size: 20), ), const SizedBox(width: 12), const Text( '团队信息(Team)', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), ], ), ), _buildTeamMember('💻', '程序设计', '无书的书🤡', '尽毕生所学,取天下之诗集,只为逗她一笑'), _buildTeamMember('🎨', 'UI/UX/Testing', 'Ayk', '....'), _buildTeamMember('⚙️', '后端', '伯乐不相马', '真的吗,还是做不到吗?'), _buildTeamMember('🔧', '技术支持', '闲言app', '闲言app原班人马打造'), ], ), ); } Widget _buildTeamMember( String emoji, String role, String name, String signature, ) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Row( children: [ Container( width: 44, height: 44, decoration: BoxDecoration( color: Colors.grey[100], borderRadius: BorderRadius.circular(10), ), child: Center( child: Text(emoji, style: const TextStyle(fontSize: 20)), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( role, style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w600, ), ), const SizedBox(width: 8), Container( padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 2, ), decoration: BoxDecoration( color: AppConstants.primaryColor.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(10), ), child: Text( name, style: TextStyle( fontSize: 11, color: AppConstants.primaryColor, ), ), ), ], ), const SizedBox(height: 4), Text( signature, style: TextStyle(fontSize: 12, color: Colors.grey[600]), ), ], ), ), ], ), ); } Widget _buildIcpCard(BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 2), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.orange.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), ), child: Icon( Icons.verified_user, color: Colors.orange[700], size: 20, ), ), const SizedBox(width: 12), const Text( 'ICP备案信息', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), ], ), ), const Divider(height: 1), Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( 'APP核准备案号', style: TextStyle(fontSize: 13, color: Colors.grey), ), const SizedBox(height: 12), InkWell( onTap: () => _copyIcpNumber(context), borderRadius: BorderRadius.circular(8), child: Container( width: double.infinity, padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.grey[50], borderRadius: BorderRadius.circular(8), border: Border.all( color: AppConstants.primaryColor.withValues(alpha: 0.3), ), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.content_copy, size: 16, color: AppConstants.primaryColor, ), const SizedBox(width: 8), Text( '滇ICP备2022000863号-15A', style: TextStyle( fontSize: 14, fontWeight: FontWeight.w600, color: AppConstants.primaryColor, ), ), ], ), ), ), const SizedBox(height: 8), Text( '💡 点击备案号可复制', style: TextStyle(fontSize: 12, color: Colors.grey[500]), ), ], ), ), ], ), ); } void _copyIcpNumber(BuildContext context) { Clipboard.setData(const ClipboardData(text: '滇ICP备2022000863号-15A')); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Row( children: [ Icon(Icons.check_circle, color: Colors.white, size: 20), SizedBox(width: 8), Text('备案号已复制到剪贴板'), ], ), backgroundColor: AppConstants.primaryColor, behavior: SnackBarBehavior.floating, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), duration: const Duration(seconds: 2), ), ); } Widget _buildBottomIndicator() { return Container( padding: const EdgeInsets.symmetric(vertical: 24), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container(width: 40, height: 1, color: Colors.grey[300]), Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Text( '到底了', style: TextStyle(fontSize: 12, color: Colors.grey[400]), ), ), Container(width: 40, height: 1, color: Colors.grey[300]), ], ), ); } }