📝 Updated about screen

This commit is contained in:
LittleSheep 2025-07-03 00:34:11 +08:00
parent 9dd6cffe0c
commit 46919dec31
3 changed files with 60 additions and 19 deletions

View File

@ -686,8 +686,9 @@
"aboutScreenDeveloperSectionTitle": "Developer", "aboutScreenDeveloperSectionTitle": "Developer",
"aboutScreenContactUsTitle": "Contact Us", "aboutScreenContactUsTitle": "Contact Us",
"aboutScreenLicenseTitle": "License", "aboutScreenLicenseTitle": "License",
"aboutScreenLicenseContent": "All copyright reserved © {} Solsynth\nOpen-sourced under license GNU AGPL v3.0", "aboutScreenLicenseContent": "GNU Affero General Public License v3.0",
"aboutScreenCopyright": "© {} {}. All rights reserved.", "aboutScreenCopyright": "All rights reserved © Solsynth {}",
"aboutScreenMadeWith": "Made with ❤︎️ by Solar Network Team",
"aboutScreenFailedToLoadPackageInfo": "Failed to load package info: {error}", "aboutScreenFailedToLoadPackageInfo": "Failed to load package info: {error}",
"copiedToClipboard": "Copied to clipboard", "copiedToClipboard": "Copied to clipboard",
"copyToClipboardTooltip": "Copy to clipboard", "copyToClipboardTooltip": "Copy to clipboard",

View File

@ -512,5 +512,33 @@
"orderId": "订单 ID", "orderId": "订单 ID",
"enterOrderId": "输入您的订单 ID", "enterOrderId": "输入您的订单 ID",
"restore": "恢复", "restore": "恢复",
"keyboardShortcuts": "键盘快捷键" "keyboardShortcuts": "键盘快捷键",
"about": "关于",
"membershipCancel": "取消会员订阅",
"membershipCancelConfirm": "您确定要取消您的会员订阅?",
"membershipCancelHint": "您确定要取消您的会员订阅吗?您将不会再被收费。您的会员资格将在当前计费周期结束前保持有效。并且您在当前订阅结束之前无法重新订阅。",
"membershipCancelSuccess": "您的会员订阅已成功取消。",
"aboutScreenTitle": "关于",
"aboutScreenVersionInfo": "版本 {} ({})",
"aboutScreenAppInfoSectionTitle": "应用信息",
"aboutScreenPackageNameLabel": "包名",
"aboutScreenVersionLabel": "版本",
"aboutScreenBuildNumberLabel": "构建编号",
"aboutScreenLinksSectionTitle": "链接",
"aboutScreenPrivacyPolicyTitle": "隐私政策",
"aboutScreenTermsOfServiceTitle": "服务条款",
"aboutScreenOpenSourceLicensesTitle": "开源许可证",
"aboutScreenDeveloperSectionTitle": "开发者",
"aboutScreenContactUsTitle": "联系我们",
"aboutScreenLicenseTitle": "许可证",
"aboutScreenLicenseContent": "GNU Affero General Public License v3.0",
"aboutScreenCopyright": "版权所有 © Solsynth {}",
"aboutScreenMadeWith": "由 Solar Network Team 用 ❤︎️ 制作",
"aboutScreenFailedToLoadPackageInfo": "加载包信息失败:{error}",
"copiedToClipboard": "已复制到剪贴板",
"copyToClipboardTooltip": "复制到剪贴板",
"postForwardingTo": "转发给",
"postReplyingTo": "回复给",
"postEditing": "您正在编辑现有帖子",
"postArticle": "文章"
} }

View File

@ -1,6 +1,7 @@
import 'package:device_info_plus/device_info_plus.dart'; import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gap/gap.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/pods/network.dart'; import 'package:island/pods/network.dart';
import 'package:island/services/notify.dart'; import 'package:island/services/notify.dart';
@ -137,19 +138,19 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
children: [ children: [
_buildInfoItem( _buildInfoItem(
context, context,
icon: Icons.info_outline, icon: Symbols.info,
label: 'aboutScreenPackageNameLabel'.tr(), label: 'aboutScreenPackageNameLabel'.tr(),
value: _packageInfo.packageName, value: _packageInfo.packageName,
), ),
_buildInfoItem( _buildInfoItem(
context, context,
icon: Icons.update, icon: Symbols.update,
label: 'aboutScreenVersionLabel'.tr(), label: 'aboutScreenVersionLabel'.tr(),
value: _packageInfo.version, value: _packageInfo.version,
), ),
_buildInfoItem( _buildInfoItem(
context, context,
icon: Icons.build, icon: Symbols.build,
label: 'aboutScreenBuildNumberLabel'.tr(), label: 'aboutScreenBuildNumberLabel'.tr(),
value: _packageInfo.buildNumber, value: _packageInfo.buildNumber,
), ),
@ -206,7 +207,7 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
children: [ children: [
_buildListTile( _buildListTile(
context, context,
icon: Icons.privacy_tip_outlined, icon: Symbols.privacy_tip,
title: 'aboutScreenPrivacyPolicyTitle'.tr(), title: 'aboutScreenPrivacyPolicyTitle'.tr(),
onTap: onTap:
() => _launchURL( () => _launchURL(
@ -215,7 +216,7 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
), ),
_buildListTile( _buildListTile(
context, context,
icon: Icons.description_outlined, icon: Symbols.description,
title: 'aboutScreenTermsOfServiceTitle'.tr(), title: 'aboutScreenTermsOfServiceTitle'.tr(),
onTap: onTap:
() => _launchURL( () => _launchURL(
@ -224,7 +225,7 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
), ),
_buildListTile( _buildListTile(
context, context,
icon: Icons.code, icon: Symbols.code,
title: 'aboutScreenOpenSourceLicensesTitle'.tr(), title: 'aboutScreenOpenSourceLicensesTitle'.tr(),
onTap: () { onTap: () {
showLicensePage( showLicensePage(
@ -247,14 +248,14 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
children: [ children: [
_buildListTile( _buildListTile(
context, context,
icon: Icons.email_outlined, icon: Symbols.email,
title: 'aboutScreenContactUsTitle'.tr(), title: 'aboutScreenContactUsTitle'.tr(),
subtitle: 'lily@solsynth.dev', subtitle: 'lily@solsynth.dev',
onTap: () => _launchURL('mailto:lily@solsynth.dev'), onTap: () => _launchURL('mailto:lily@solsynth.dev'),
), ),
_buildListTile( _buildListTile(
context, context,
icon: Icons.copyright, icon: Symbols.copyright,
title: 'aboutScreenLicenseTitle'.tr(), title: 'aboutScreenLicenseTitle'.tr(),
subtitle: 'aboutScreenLicenseContent'.tr( subtitle: 'aboutScreenLicenseContent'.tr(
args: [DateTime.now().year.toString()], args: [DateTime.now().year.toString()],
@ -272,14 +273,25 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
// Copyright // Copyright
Padding( Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
child: Text( child: Column(
'aboutScreenCopyright'.tr( children: [
args: [DateTime.now().year.toString(), "Solsynth"], Text(
), 'aboutScreenCopyright'.tr(
style: theme.textTheme.bodySmall, args: [DateTime.now().year.toString()],
textAlign: TextAlign.center, ),
style: theme.textTheme.bodySmall,
textAlign: TextAlign.center,
),
const Gap(1),
Text(
'aboutScreenMadeWith'.tr(),
textAlign: TextAlign.center,
).fontSize(10).opacity(0.8),
],
), ),
), ),
Gap(MediaQuery.of(context).padding.bottom + 16),
], ],
), ),
), ),
@ -341,7 +353,7 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
), ),
if (value.startsWith('http') || value.contains('@') || copyable) if (value.startsWith('http') || value.contains('@') || copyable)
IconButton( IconButton(
icon: const Icon(Icons.copy, size: 16), icon: const Icon(Symbols.content_copy, size: 16),
onPressed: () { onPressed: () {
Clipboard.setData(ClipboardData(text: value)); Clipboard.setData(ClipboardData(text: value));
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
@ -373,7 +385,7 @@ class _AboutScreenState extends ConsumerState<AboutScreen> {
subtitle: subtitle != null ? Text(subtitle) : null, subtitle: subtitle != null ? Text(subtitle) : null,
isThreeLine: multipleLines, isThreeLine: multipleLines,
trailing: const Icon( trailing: const Icon(
Icons.chevron_right, Symbols.chevron_right,
).padding(top: multipleLines ? 8 : 0), ).padding(top: multipleLines ? 8 : 0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
onTap: onTap, onTap: onTap,