diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index 983eeae..ff6ca97 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -650,5 +650,10 @@ "realmIsCommunity": "Community Realm", "realmIsCommunityDescription": "Community realm will be displayed on the discover page.", "realmLeave": "Leave Realm", - "realmLeaveDescription": "Leave the current realm and delete the realm's identity." + "realmLeaveDescription": "Leave the current realm and delete the realm's identity.", + "checkInResultTier1": "Worst", + "checkInResultTier2": "Worse", + "checkInResultTier3": "Normal", + "checkInResultTier4": "Better", + "checkInResultTier5": "Best" } diff --git a/assets/translations/zh-CN.json b/assets/translations/zh-CN.json index a1b02d1..46aa86e 100644 --- a/assets/translations/zh-CN.json +++ b/assets/translations/zh-CN.json @@ -649,5 +649,10 @@ "realmIsCommunity": "社区领域", "realmIsCommunityDescription": "社区领域会显示在发现页面上。", "realmLeave": "离开领域", - "realmLeaveDescription": "离开当前领域,并且删除领域中的身份。" + "realmLeaveDescription": "离开当前领域,并且删除领域中的身份。", + "checkInResultTier1": "大凶", + "checkInResultTier2": "凶", + "checkInResultTier3": "中平", + "checkInResultTier4": "吉", + "checkInResultTier5": "大吉" } diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 32e897e..b7d0c35 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -663,10 +663,24 @@ class _HomeDashRecommendationPostWidgetState extends State<_HomeDashRecommendati } } + int _currentPage = 0; + final PageController _pageController = PageController(); + @override void initState() { super.initState(); _fetchRecommendationPosts(); + _pageController.addListener(() { + setState(() { + _currentPage = _pageController.page?.round() ?? 0; + }); + }); + } + + @override + void dispose() { + _pageController.dispose(); + super.dispose(); } @override @@ -684,17 +698,24 @@ class _HomeDashRecommendationPostWidgetState extends State<_HomeDashRecommendati crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - const Icon(Symbols.star), - const Gap(8), - Text( - 'postRecommendation', - style: Theme.of(context).textTheme.titleLarge, - ).tr() + Row( + children: [ + const Icon(Symbols.star), + const Gap(8), + Text( + 'postRecommendation', + style: Theme.of(context).textTheme.titleLarge, + ).tr(), + ], + ), + Text('${_currentPage + 1}/${_posts?.length ?? 0}', style: GoogleFonts.robotoMono()) ], ).padding(horizontal: 18, top: 12, bottom: 8), Expanded( child: PageView.builder( + controller: _pageController, scrollBehavior: ScrollConfiguration.of(context).copyWith(dragDevices: { PointerDeviceKind.mouse, PointerDeviceKind.touch, diff --git a/lib/types/check_in.dart b/lib/types/check_in.dart index 4becd56..057198a 100644 --- a/lib/types/check_in.dart +++ b/lib/types/check_in.dart @@ -1,9 +1,17 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part 'check_in.freezed.dart'; + part 'check_in.g.dart'; -const List kCheckInResultTierSymbols = ['Bad', 'Poor', 'Medium', 'Good', 'Great']; +final List kCheckInResultTierSymbols = [ + 'checkInResultTier1', + 'checkInResultTier2', + 'checkInResultTier3', + 'checkInResultTier4', + 'checkInResultTier5' +].map((e) => e.tr()).toList(); @freezed class SnCheckInRecord with _$SnCheckInRecord { @@ -21,8 +29,7 @@ class SnCheckInRecord with _$SnCheckInRecord { required int accountId, }) = _SnCheckInRecord; - factory SnCheckInRecord.fromJson(Map json) => - _$SnCheckInRecordFromJson(json); + factory SnCheckInRecord.fromJson(Map json) => _$SnCheckInRecordFromJson(json); String get symbol => kCheckInResultTierSymbols[resultTier]; }