import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:go_router/go_router.dart'; import 'package:new_learn/core/version/app_version_service.dart'; /// ============================================================ /// 【AboutAppPage】关于APP页 —— 对齐 Vue pages/myPackage/aboutApp/index.vue /// /// 菜单:隐私政策 / 用户协议 / 版本号(只读) /// 底部:APP备案号 /// ============================================================ class AboutAppPage extends ConsumerStatefulWidget { const AboutAppPage({super.key}); @override ConsumerState createState() => _AboutAppPageState(); } class _AboutAppPageState extends ConsumerState { String _version = ''; static const _recordNumber = '京ICP备2026019420号-2A'; @override void initState() { super.initState(); _loadVersion(); } Future _loadVersion() async { final service = AppVersionService.instance; if (service.versionName.isEmpty) { await service.init(); } if (mounted) setState(() => _version = service.versionName); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF5F8FA), appBar: AppBar( title: const Text('关于APP'), backgroundColor: Colors.white, surfaceTintColor: Colors.transparent, leading: IconButton( icon: const Icon(Icons.arrow_back), onPressed: () => context.canPop() ? context.pop() : context.go('/my'), ), ), body: ListView( padding: EdgeInsets.all(12.w), children: [ // 隐私政策 _buildRow( title: '隐私政策', trailing: const Icon( Icons.chevron_right, size: 22, color: Color(0xFF7FB0F2), ), onTap: () => context.push('/privacy-policy'), showBorder: true, ), // 用户协议 _buildRow( title: '用户协议', trailing: const Icon( Icons.chevron_right, size: 22, color: Color(0xFF7FB0F2), ), onTap: () => context.push('/user-agreement'), showBorder: true, ), // 版本号(只读,无跳转) _buildRow( title: '版本号', trailing: Text( _version, style: TextStyle(fontSize: 14.sp, color: const Color(0xFF687FAD)), ), onTap: null, showBorder: false, ), SizedBox(height: 48.h), // 备案号 Center( child: Text( 'APP备案编号:$_recordNumber', style: TextStyle(fontSize: 12.sp, color: const Color(0xFF687FAD)), ), ), ], ), ); } Widget _buildRow({ required String title, required Widget trailing, required VoidCallback? onTap, required bool showBorder, }) { return InkWell( onTap: onTap, child: Column( children: [ Container( height: 52.h, padding: EdgeInsets.symmetric(horizontal: 16.w), color: Colors.white, child: Row( children: [ Text( title, style: TextStyle( fontSize: 16.sp, color: const Color(0xFF1D2B47), ), ), const Spacer(), trailing, ], ), ), if (showBorder) Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: Container(height: 1, color: const Color(0xFFEDF3F7)), ), ], ), ); } }