Detailed daily check in fortune info

This commit is contained in:
LittleSheep 2024-11-27 23:37:40 +08:00
parent bd1d6b7be9
commit 9395e081f0
3 changed files with 118 additions and 4 deletions

View File

@ -242,5 +242,30 @@
"dailyCheckIn": "Check In", "dailyCheckIn": "Check In",
"dailyCheckInNone": "You haven't checked in today", "dailyCheckInNone": "You haven't checked in today",
"dailyCheckAction": "Check in right now!", "dailyCheckAction": "Check in right now!",
"dailyCheckDetail": "Can't understand the talisman? Master, help me understand it!" "dailyCheckDetail": "Can't understand the symbol? Master, help me understand it!",
"dailyCheckDetailTitle": "{}'s fortune details",
"dailyCheckPositiveHint1": "Making friends",
"dailyCheckPositiveHint1Description": "Friendship lasts forever",
"dailyCheckPositiveHint2": "Drinking",
"dailyCheckPositiveHint2Description": "Drinking under the moonlight with an imaginary companion",
"dailyCheckPositiveHint3": "Traveling",
"dailyCheckPositiveHint3Description": "A journey of a thousand miles begins with a single step",
"dailyCheckPositiveHint4": "Exercising",
"dailyCheckPositiveHint4Description": "Life lies in movement",
"dailyCheckPositiveHint5": "Learning",
"dailyCheckPositiveHint5Description": "Knowledge knows no bounds; progress every day",
"dailyCheckPositiveHint6": "Planting",
"dailyCheckPositiveHint6Description": "Sow hope, reap the future",
"dailyCheckNegativeHint1": "Eating",
"dailyCheckNegativeHint1Description": "Biting your tongue while eating",
"dailyCheckNegativeHint2": "Taking exams",
"dailyCheckNegativeHint2Description": "The exam covered what you didn't review",
"dailyCheckNegativeHint3": "Catching a bus",
"dailyCheckNegativeHint3Description": "Just missed the bus",
"dailyCheckNegativeHint4": "Shopping",
"dailyCheckNegativeHint4Description": "Bought clothes that don't fit",
"dailyCheckNegativeHint5": "Gaming",
"dailyCheckNegativeHint5Description": "Lost connection at a crucial moment",
"dailyCheckNegativeHint6": "Going out",
"dailyCheckNegativeHint6Description": "Forgot your umbrella and got caught in the rain"
} }

View File

@ -242,5 +242,32 @@
"dailyCheckIn": "每日签到", "dailyCheckIn": "每日签到",
"dailyCheckInNone": "今日尚未签到", "dailyCheckInNone": "今日尚未签到",
"dailyCheckAction": "现在签到", "dailyCheckAction": "现在签到",
"dailyCheckDetail": "看不懂符?大师帮我解惑!" "dailyCheckDetail": "看不懂符?大师帮我解惑!",
"dailyCheckDetailTitle": "{} 的运势详情",
"dailyCheckPositiveHint": "宜 {}",
"dailyCheckNegativeHint": "忌 {}",
"dailyCheckPositiveHint1": "交友",
"dailyCheckPositiveHint1Description": "友谊地久天长",
"dailyCheckPositiveHint2": "饮酒",
"dailyCheckPositiveHint2Description": "对影成三人",
"dailyCheckPositiveHint3": "旅行",
"dailyCheckPositiveHint3Description": "千里之行,始于足下",
"dailyCheckPositiveHint4": "运动",
"dailyCheckPositiveHint4Description": "生命在于运动",
"dailyCheckPositiveHint5": "学习",
"dailyCheckPositiveHint5Description": "学无止境,日有所进",
"dailyCheckPositiveHint6": "种植",
"dailyCheckPositiveHint6Description": "种下希望,收获未来",
"dailyCheckNegativeHint1": "吃饭",
"dailyCheckNegativeHint1Description": "吃饭咬到舌头",
"dailyCheckNegativeHint2": "考试",
"dailyCheckNegativeHint2Description": "考的东西刚好没复习",
"dailyCheckNegativeHint3": "坐公交",
"dailyCheckNegativeHint3Description": "赶车刚好错过一班",
"dailyCheckNegativeHint4": "购物",
"dailyCheckNegativeHint4Description": "买回来的衣服发现不合适",
"dailyCheckNegativeHint5": "打游戏",
"dailyCheckNegativeHint5Description": "关键时刻断网",
"dailyCheckNegativeHint6": "出门",
"dailyCheckNegativeHint6Description": "忘带伞遇上大雨"
} }

View File

@ -1,5 +1,6 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:gap/gap.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:material_symbols_icons/symbols.dart'; import 'package:material_symbols_icons/symbols.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -90,6 +91,9 @@ class _HomeDashCheckInWidgetState extends State<_HomeDashCheckInWidget> {
SnCheckInRecord? _todayRecord; SnCheckInRecord? _todayRecord;
static const int kSuggestionPositiveHintCount = 6;
static const int kSuggestionNegativeHintCount = 6;
Future<void> _pullCheckIn() async { Future<void> _pullCheckIn() async {
setState(() => _isBusy = true); setState(() => _isBusy = true);
try { try {
@ -118,6 +122,64 @@ class _HomeDashCheckInWidgetState extends State<_HomeDashCheckInWidget> {
} }
} }
Widget _buildDetailChunk(int index, bool positive) {
final prefix =
positive ? 'dailyCheckPositiveHint' : 'dailyCheckNegativeHint';
final mod =
positive ? kSuggestionPositiveHintCount : kSuggestionNegativeHintCount;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
prefix.tr(args: [
'$prefix${_todayRecord!.resultModifiers[index] % mod}'.tr()
]),
style: Theme.of(context)
.textTheme
.titleMedium!
.copyWith(fontWeight: FontWeight.bold),
).tr(),
Text(
'$prefix${_todayRecord!.resultModifiers[index] % kSuggestionPositiveHintCount}Description',
style: Theme.of(context).textTheme.bodyMedium,
).tr(),
],
);
}
void _showCheckInDetail() {
showDialog(
useRootNavigator: true,
context: context,
builder: (context) {
return AlertDialog(
title: Text('dailyCheckDetailTitle'.tr(args: [
DateFormat('MM/dd').format(DateTime.now().toUtc()),
])),
content: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
_buildDetailChunk(0, true),
const Gap(8),
_buildDetailChunk(1, true),
const Gap(8),
_buildDetailChunk(2, false),
const Gap(8),
_buildDetailChunk(3, false),
],
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text('dialogDismiss').tr(),
)
],
);
},
);
}
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -169,7 +231,7 @@ class _HomeDashCheckInWidgetState extends State<_HomeDashCheckInWidget> {
Text( Text(
'+${_todayRecord!.resultExperience} EXP', '+${_todayRecord!.resultExperience} EXP',
style: Theme.of(context).textTheme.bodyLarge, style: Theme.of(context).textTheme.bodyLarge,
).tr(), ),
], ],
), ),
), ),
@ -201,7 +263,7 @@ class _HomeDashCheckInWidgetState extends State<_HomeDashCheckInWidget> {
key: UniqueKey(), key: UniqueKey(),
tooltip: 'dailyCheckDetail'.tr(), tooltip: 'dailyCheckDetail'.tr(),
icon: const Icon(Symbols.help), icon: const Icon(Symbols.help),
onPressed: _isBusy ? null : _doCheckIn, onPressed: _showCheckInDetail,
), ),
), ),
), ),