合并代码
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
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<AboutAppPage> createState() => _AboutAppPageState();
|
||||
}
|
||||
|
||||
class _AboutAppPageState extends ConsumerState<AboutAppPage> {
|
||||
String _version = '';
|
||||
static const _recordNumber = '京ICP备2026019420号-2A';
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadVersion();
|
||||
}
|
||||
|
||||
Future<void> _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)),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user