💄 Colorful name for subscribed users

This commit is contained in:
LittleSheep 2025-07-02 22:24:56 +08:00
parent 9fc9b87608
commit 14183a7316
3 changed files with 534 additions and 541 deletions

View File

@ -542,6 +542,7 @@
"upgradeYourPlan": "Upgrade Your Plan", "upgradeYourPlan": "Upgrade Your Plan",
"chooseYourPlan": "Choose Your Plan", "chooseYourPlan": "Choose Your Plan",
"currentMembership": "Current: {}", "currentMembership": "Current: {}",
"currentMembershipMember": "A member of Stellar Program · {}",
"membershipExpires": "Expires: {}", "membershipExpires": "Expires: {}",
"membershipTierStellar": "Stellar", "membershipTierStellar": "Stellar",
"membershipTierNova": "Nova", "membershipTierNova": "Nova",

View File

@ -345,7 +345,7 @@
"accountSettingsHelpContent": "此页面允许您管理您的帐户安全性、隐私和其他设置。如果您需要帮助,请联系管理员。", "accountSettingsHelpContent": "此页面允许您管理您的帐户安全性、隐私和其他设置。如果您需要帮助,请联系管理员。",
"unauthorized": "未授权", "unauthorized": "未授权",
"unauthorizedHint": "您未登录或会话已过期,请重新登录。", "unauthorizedHint": "您未登录或会话已过期,请重新登录。",
"publisherBelongsTo": "属于", "publisherBelongsTo": "属于 {}",
"postContent": "内容", "postContent": "内容",
"postSettings": "设置", "postSettings": "设置",
"postPublisherUnselected": "未指定发布者", "postPublisherUnselected": "未指定发布者",
@ -473,7 +473,7 @@
"description": "描述", "description": "描述",
"pinCode": "PIN 码", "pinCode": "PIN 码",
"biometric": "生物识别", "biometric": "生物识别",
"enterPinToConfirm": "请输入您的6位数字 PIN 以确认付款", "enterPinToConfirm": "请输入您的 6 位数字 PIN 以确认付款",
"clearPin": "清除 PIN 码", "clearPin": "清除 PIN 码",
"useBiometricToConfirm": "使用生物特征认证来确认付款", "useBiometricToConfirm": "使用生物特征认证来确认付款",
"touchSensorToAuthenticate": "触摸传感器进行身份验证", "touchSensorToAuthenticate": "触摸传感器进行身份验证",
@ -494,6 +494,7 @@
"upgradeYourPlan": "升级您的计划", "upgradeYourPlan": "升级您的计划",
"chooseYourPlan": "选择你的方案", "chooseYourPlan": "选择你的方案",
"currentMembership": "当前:{}", "currentMembership": "当前:{}",
"currentMembershipMember": "恒星计划「{}」级会员",
"membershipExpires": "过期于:{}", "membershipExpires": "过期于:{}",
"membershipTierStellar": "恒星", "membershipTierStellar": "恒星",
"membershipTierNova": "新星", "membershipTierNova": "新星",
@ -503,14 +504,6 @@
"membershipPriceNova": "每月 2400 源点,至少需要 6 级", "membershipPriceNova": "每月 2400 源点,至少需要 6 级",
"membershipPriceSupernova": "每月 3600 源点,至少需要 9 级", "membershipPriceSupernova": "每月 3600 源点,至少需要 9 级",
"membershipFeatureBasic": "基础功能", "membershipFeatureBasic": "基础功能",
"membershipFeaturePrioritySupport": "优先支持",
"membershipFeatureAdFree": "无广告",
"membershipFeatureAllPrimary": "所有主要功能",
"membershipFeatureAdvancedCustomization": "高级自定义",
"membershipFeatureEarlyAccess": "抢先体验",
"membershipFeatureAllNova": "所有「新星」功能",
"membershipFeatureExclusiveContent": "限定内容",
"membershipFeatureVipSupport": "VIP 支持",
"membershipCurrentBadge": "当前", "membershipCurrentBadge": "当前",
"restorePurchase": "恢复购买", "restorePurchase": "恢复购买",
"restorePurchaseDescription": "输入您付款的提供商和订单 ID 以恢复您的购买。", "restorePurchaseDescription": "输入您付款的提供商和订单 ID 以恢复您的购买。",

View File

@ -21,11 +21,23 @@ class AccountName extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var nameStyle = (style ?? TextStyle());
if (account.profile.stellarMembership != null) {
nameStyle = nameStyle.copyWith(
color: (switch (account.profile.stellarMembership!.identifier) {
'solian.stellar.primary' => Colors.blueAccent,
'solian.stellar.nova' => Colors.indigoAccent,
'solian.stellar.supernova' => Colors.amberAccent,
_ => null,
}),
);
}
return Row( return Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
spacing: 4, spacing: 4,
children: [ children: [
Flexible(child: Text(account.nick, style: style)), Flexible(child: Text(account.nick, style: nameStyle)),
if (account.profile.stellarMembership != null) if (account.profile.stellarMembership != null)
StellarMembershipMark(membership: account.profile.stellarMembership!), StellarMembershipMark(membership: account.profile.stellarMembership!),
if (account.profile.verification != null) if (account.profile.verification != null)
@ -87,36 +99,23 @@ class StellarMembershipMark extends StatelessWidget {
Color _getMembershipTierColor(String identifier) { Color _getMembershipTierColor(String identifier) {
switch (identifier) { switch (identifier) {
case 'solian.stellar.primary': case 'solian.stellar.primary':
return Colors.amber;
case 'solian.stellar.nova':
return Colors.blue; return Colors.blue;
case 'solian.stellar.nova':
return Colors.indigo;
case 'solian.stellar.supernova': case 'solian.stellar.supernova':
return Colors.purple; return Colors.amber;
default: default:
return Colors.grey; return Colors.grey;
} }
} }
IconData _getMembershipTierIcon(String identifier) {
switch (identifier) {
case 'solian.stellar.primary':
return Symbols.star;
case 'solian.stellar.nova':
return Symbols.auto_awesome;
case 'solian.stellar.supernova':
return Symbols.diamond;
default:
return Symbols.workspace_premium;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (!membership.isActive) return const SizedBox.shrink(); if (!membership.isActive) return const SizedBox.shrink();
final tierName = _getMembershipTierName(membership.identifier); final tierName = _getMembershipTierName(membership.identifier);
final tierColor = _getMembershipTierColor(membership.identifier); final tierColor = _getMembershipTierColor(membership.identifier);
final tierIcon = _getMembershipTierIcon(membership.identifier); final tierIcon = Symbols.award_star;
return Tooltip( return Tooltip(
richMessage: TextSpan( richMessage: TextSpan(
@ -124,7 +123,7 @@ class StellarMembershipMark extends StatelessWidget {
children: [ children: [
TextSpan(text: '\n'), TextSpan(text: '\n'),
TextSpan( TextSpan(
text: 'currentMembership'.tr(args: [tierName]), text: 'currentMembershipMember'.tr(args: [tierName]),
style: TextStyle(fontWeight: FontWeight.normal), style: TextStyle(fontWeight: FontWeight.normal),
), ),
], ],