Commit 169759907d68bdbd27c8324d3e5639bbafa7e3f8

Authored by 常守达
1 parent 7cccaa07

fix(today):锻炼只展示分钟

... ... @@ -189,8 +189,7 @@ class TodayActivityCard extends StatelessWidget {
// exercise 单位为秒,转换为小时+分钟
Widget exerciseWidget;
if (exercise > 0 && (activityTarget?.exercise ?? 0) > 0) {
final exHours = exercise ~/ 3600;
final exMinutes = (exercise % 3600) ~/ 60;
final exTotalMinutes = exercise ~/ 60;
exerciseWidget = Text.rich(
TextSpan(
style: TextStyle(
... ... @@ -199,28 +198,15 @@ class TodayActivityCard extends StatelessWidget {
fontWeight: FontWeight.w600,
),
children: [
if (exHours > 0) ...[
TextSpan(text: '$exHours'),
TextSpan(
text: l10n.reportUnitHour,
style: TextStyle(
color: context.colors.textSecondary,
fontSize: 12,
fontWeight: FontWeight.w400,
),
),
],
if (exMinutes > 0 || exHours == 0) ...[
TextSpan(text: exMinutes > 0 ? '$exMinutes' : '0'),
TextSpan(
text: l10n.reportUnitMinute,
style: TextStyle(
color: context.colors.textSecondary,
fontSize: 12,
fontWeight: FontWeight.w400,
),
TextSpan(text: '$exTotalMinutes'),
TextSpan(
text: l10n.reportUnitMinute,
style: TextStyle(
color: context.colors.textSecondary,
fontSize: 12,
fontWeight: FontWeight.w400,
),
],
),
],
),
);
... ...
... ... @@ -22,74 +22,74 @@
"settings": "Settings",
"onboardingIntroTitle": "DoubleFeel is a health companion app built for Apple Watch",
"onboardingIntroBody": "<em>Understand yourself better</em>, and let people who care about you <em>notice when you need support.</em>",
"onboardingStateQuestion": "Which of these often happens to you?",
"onboardingStateStressAnxiety": "I often feel stressed or anxious",
"onboardingStateTired": "I get tired easily",
"onboardingStatePoorRest": "I wake up but still do not feel rested",
"onboardingStateNeedStimulants": "I rely on cigarettes, alcohol, coffee, or other stimulants to stay alert",
"onboardingStateQuestion": "Which happens to you often?",
"onboardingStateStressAnxiety": "Often stressed or anxious",
"onboardingStateTired": "Feel tired easily",
"onboardingStatePoorRest": "Wake up feeling tired",
"onboardingStateNeedStimulants": "Rely on stimulants to stay alert",
"onboardingStateNone": "None of the above",
"onboardingStressGoalQuestion": "What do you want to learn by understanding stress?",
"onboardingStressGoalSource": "Understand where stress comes from",
"onboardingStressGoalReminder": "Get reminded when stress appears",
"onboardingStressGoalLovedOnes": "Let people who care about me know my stress state",
"onboardingStressGoalRelax": "Understand stress and feel lighter",
"onboardingStressGoalBodyTalk": "Communicate better with my body",
"onboardingReliefQuestion": "Which methods do you think can ease stress?",
"onboardingReliefSleep": "Regular sleep",
"onboardingReliefCare": "Care from people close to me",
"onboardingReliefExercise": "More exercise",
"onboardingStressGoalQuestion": "What do you want from stress tracking?",
"onboardingStressGoalSource": "Understand stress sources",
"onboardingStressGoalReminder": "Get stress reminders",
"onboardingStressGoalLovedOnes": "Share stress with loved ones",
"onboardingStressGoalRelax": "Feel calmer",
"onboardingStressGoalBodyTalk": "Understand my body",
"onboardingReliefQuestion": "What helps you relieve stress?",
"onboardingReliefSleep": "Better sleep",
"onboardingReliefCare": "Care from loved ones",
"onboardingReliefExercise": "Exercise more",
"onboardingReliefSun": "More sunlight",
"onboardingReliefWater": "Drink more water",
"onboardingReliefMeditation": "Mindfulness meditation",
"onboardingReliefMeditation": "Meditation",
"onboardingKeyDataTitle": "",
"onboardingKeyDataSubtitle": "Everyone has a magical and important body metric that can help us:",
"onboardingKeyDataStress": "Monitor stress",
"onboardingKeyDataFatigue": "Avoid overwork and physical fatigue",
"onboardingKeyDataRecovery": "Measure exercise recovery",
"onboardingKeyDataHabits": "Build healthy habits",
"onboardingKeyDataLovedOnes": "Help important people care about your state in time",
"onboardingKeyDataSubtitle": "Your body has a hidden signal that can help you:",
"onboardingKeyDataStress": "Track stress",
"onboardingKeyDataFatigue": "Avoid burnout",
"onboardingKeyDataRecovery": "Balance recovery",
"onboardingKeyDataHabits": "Build healthier habits",
"onboardingKeyDataLovedOnes": "Let loved ones care for you sooner",
"onboardingTellMeWhatItIs": "Tell me what it is!",
"onboardingHrvTitle": "It is HRV, heart rate variability",
"onboardingHrvSubtitle": "It helps us measure overall stress and health",
"onboardingHrvDescription": "Heart rate variability (HRV) is the tiny variation in time between heartbeats. It reflects autonomic nervous system activity and how the body responds to stress.",
"onboardingHrvTitle": "It’s called HRV",
"onboardingHrvSubtitle": "HRV helps reflect your stress, recovery, and overall wellness",
"onboardingHrvDescription": "Heart Rate Variability (HRV) measures tiny changes between heartbeats and reflects how your body responds to stress.",
"onboardingTellMeMore": "Tell me more",
"onboardingResearchTitle": "Research shows HRV is closely linked to how your body feels",
"onboardingResearchFatigue": "Physical fatigue",
"onboardingResearchEnergy": "Full of energy",
"onboardingResearchHrvDown": "HRV down",
"onboardingResearchHrvUp": "HRV up",
"onboardingHealthPermissionTitle": "Allow health data access",
"onboardingHealthPermissionBody": "DoubleFeel needs connected wearable health data to send reminders, count stress moments, and provide suggestions.",
"onboardingHealthPermissionPrivacy": "Your health data is stored locally. We do not upload any related data.",
"onboardingResearchTitle": "Studies show that HRV changes are closely related to how our body and mind feel",
"onboardingResearchFatigue": "Feeling tired",
"onboardingResearchEnergy": "Feeling great",
"onboardingResearchHrvDown": "HRV",
"onboardingResearchHrvUp": "HRV",
"onboardingHealthPermissionTitle": "Allow Health Access",
"onboardingHealthPermissionBody": "DoubleFeel uses health data to track stress and wellness.",
"onboardingHealthPermissionPrivacy": "Your health raw data stays private and is never uploaded.",
"onboardingNotificationTitle": "Turn on notifications",
"onboardingNotificationSubtitle": "",
"onboardingNotificationBody": "Get notified when your body shows unusual stress or fatigue signals.",
"onboardingMemberTitle": "Get Annual Membership Offer",
"onboardingMemberBody": "Start your stress tracking and wellness journey, and never miss caring moments.",
"onboardingMemberAllOptions": "View all purchase options",
"healthCompanionIsNowAvailable": "Health Companion is now available",
"youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired": "You can now view each other's HRV, stress levels, and sleep patterns, and reach out to check in when the other person seems tired.",
"bindPartnerTitle": "Add a Close Contact\nOne more person to care about your health",
"healthCompanionIsNowAvailable": "Wellness Companion Activated",
"youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired": "You can now track HRV, stress, and sleep changes, and share alerts with loved ones.",
"bindPartnerTitle": "Add a Loved One\nFollow your health",
"bindPartnerMyId": "My ID",
"bindPartnerShareMyCode": "Share My Code",
"bindPartnerShareMyCode": "Share My ID",
"bindPartnerOr": "or",
"bindPartnerContactId": "Close Contact's ID",
"bindPartnerContactId": "Loved One’s ID",
"bindPartnerInputHint": "Enter here",
"bindPartnerSkip": "Maybe Later",
"onboardingResearchStress": "High Stress",
"onboardingResearchRelaxed": "Feeling Relaxed",
"onboardingResearchSick": "Sick or Unwell",
"onboardingResearchHealthy": "Feeling Great",
"onboardingResearchStress": "Stressed",
"onboardingResearchRelaxed": "Relaxed",
"onboardingResearchSick": "Feeling sick Unwell",
"onboardingResearchHealthy": "Recovering well",
"onboardingResearchPoorSleep": "Poor Sleep",
"onboardingResearchGoodSleep": "Good Sleep",
"onboardingResearchGoodSleep": "Well rested",
"loginSlogan": "Start your journey of stress insights and caring connection.",
"loginWithPhone": "Sign in with Phone",
"loginWithApple": "Sign in with Apple",
"loginLastUsed": "Last used",
"loginAgreementPrefix": "By clicking above, you agree to the ",
"loginTerms": "Terms of Service",
"loginAgreementAnd": " and ",
"loginPrivacy": "Privacy Policy",
"loginAgreementPrefix": "By tapping, you agree to ",
"loginTerms": "Terms",
"loginAgreementAnd": " & ",
"loginPrivacy": "Policy",
"phoneLoginHello": "Hello~",
"phoneLoginWelcome": "Welcome to Double Feel",
"phoneLoginPhoneHint": "Enter phone number",
... ... @@ -104,10 +104,10 @@
"phoneLoginInvalidPhone": "Invalid phone number",
"phoneLoginCodeSentSuccess": "Code sent",
"phoneLoginInvalidCode": "Invalid verification code",
"todayHealthDataAuthTitle": "Fetching health data",
"todayHealthDataAuthDescription": "DoubleFeel needs access to your Apple Health data to provide stress reminders, real-time stress statistics, and health suggestions.\nIf you have not authorized it yet, please click below to complete the authorization; if you have authorized it, it may take a few minutes to sync a large amount of health data for the first time, please try again later.",
"todayHealthDataAuthAction": "Authorize health data access",
"measureYourHrvNow": "Measure your HRV now",
"todayHealthDataAuthTitle": "Syncing Health Data",
"todayHealthDataAuthDescription": "DoubleFeel needs access to your Apple Health data to provide stress insights, real-time stress tracking, and health recommendations.\nIf you haven’t granted access, please allow permissions below. If you have already granted access, syncing your health data may take a few minutes. Please try again later.",
"todayHealthDataAuthAction": "Allow Health Access",
"measureYourHrvNow": "How to take a measurement",
"todayBottomSheetGotIt": "Got it",
"todayFaqTitle": "FAQ",
"todayFaqSectionTitle": "DoubleFeel FAQ",
... ...
... ... @@ -77,57 +77,54 @@ class AppLocalizationsEn extends AppLocalizations {
'<em>Understand yourself better</em>, and let people who care about you <em>notice when you need support.</em>';
@override
String get onboardingStateQuestion => 'Which of these often happens to you?';
String get onboardingStateQuestion => 'Which happens to you often?';
@override
String get onboardingStateStressAnxiety => 'I often feel stressed or anxious';
String get onboardingStateStressAnxiety => 'Often stressed or anxious';
@override
String get onboardingStateTired => 'I get tired easily';
String get onboardingStateTired => 'Feel tired easily';
@override
String get onboardingStatePoorRest =>
'I wake up but still do not feel rested';
String get onboardingStatePoorRest => 'Wake up feeling tired';
@override
String get onboardingStateNeedStimulants =>
'I rely on cigarettes, alcohol, coffee, or other stimulants to stay alert';
'Rely on stimulants to stay alert';
@override
String get onboardingStateNone => 'None of the above';
@override
String get onboardingStressGoalQuestion =>
'What do you want to learn by understanding stress?';
'What do you want from stress tracking?';
@override
String get onboardingStressGoalSource => 'Understand where stress comes from';
String get onboardingStressGoalSource => 'Understand stress sources';
@override
String get onboardingStressGoalReminder => 'Get reminded when stress appears';
String get onboardingStressGoalReminder => 'Get stress reminders';
@override
String get onboardingStressGoalLovedOnes =>
'Let people who care about me know my stress state';
String get onboardingStressGoalLovedOnes => 'Share stress with loved ones';
@override
String get onboardingStressGoalRelax => 'Understand stress and feel lighter';
String get onboardingStressGoalRelax => 'Feel calmer';
@override
String get onboardingStressGoalBodyTalk => 'Communicate better with my body';
String get onboardingStressGoalBodyTalk => 'Understand my body';
@override
String get onboardingReliefQuestion =>
'Which methods do you think can ease stress?';
String get onboardingReliefQuestion => 'What helps you relieve stress?';
@override
String get onboardingReliefSleep => 'Regular sleep';
String get onboardingReliefSleep => 'Better sleep';
@override
String get onboardingReliefCare => 'Care from people close to me';
String get onboardingReliefCare => 'Care from loved ones';
@override
String get onboardingReliefExercise => 'More exercise';
String get onboardingReliefExercise => 'Exercise more';
@override
String get onboardingReliefSun => 'More sunlight';
... ... @@ -136,74 +133,73 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingReliefWater => 'Drink more water';
@override
String get onboardingReliefMeditation => 'Mindfulness meditation';
String get onboardingReliefMeditation => 'Meditation';
@override
String get onboardingKeyDataTitle => '';
@override
String get onboardingKeyDataSubtitle =>
'Everyone has a magical and important body metric that can help us:';
'Your body has a hidden signal that can help you:';
@override
String get onboardingKeyDataStress => 'Monitor stress';
String get onboardingKeyDataStress => 'Track stress';
@override
String get onboardingKeyDataFatigue => 'Avoid overwork and physical fatigue';
String get onboardingKeyDataFatigue => 'Avoid burnout';
@override
String get onboardingKeyDataRecovery => 'Measure exercise recovery';
String get onboardingKeyDataRecovery => 'Balance recovery';
@override
String get onboardingKeyDataHabits => 'Build healthy habits';
String get onboardingKeyDataHabits => 'Build healthier habits';
@override
String get onboardingKeyDataLovedOnes =>
'Help important people care about your state in time';
String get onboardingKeyDataLovedOnes => 'Let loved ones care for you sooner';
@override
String get onboardingTellMeWhatItIs => 'Tell me what it is!';
@override
String get onboardingHrvTitle => 'It is HRV, heart rate variability';
String get onboardingHrvTitle => 'It’s called HRV';
@override
String get onboardingHrvSubtitle =>
'It helps us measure overall stress and health';
'HRV helps reflect your stress, recovery, and overall wellness';
@override
String get onboardingHrvDescription =>
'Heart rate variability (HRV) is the tiny variation in time between heartbeats. It reflects autonomic nervous system activity and how the body responds to stress.';
'Heart Rate Variability (HRV) measures tiny changes between heartbeats and reflects how your body responds to stress.';
@override
String get onboardingTellMeMore => 'Tell me more';
@override
String get onboardingResearchTitle =>
'Research shows HRV is closely linked to how your body feels';
'Studies show that HRV changes are closely related to how our body and mind feel';
@override
String get onboardingResearchFatigue => 'Physical fatigue';
String get onboardingResearchFatigue => 'Feeling tired';
@override
String get onboardingResearchEnergy => 'Full of energy';
String get onboardingResearchEnergy => 'Feeling great';
@override
String get onboardingResearchHrvDown => 'HRV down';
String get onboardingResearchHrvDown => 'HRV';
@override
String get onboardingResearchHrvUp => 'HRV up';
String get onboardingResearchHrvUp => 'HRV';
@override
String get onboardingHealthPermissionTitle => 'Allow health data access';
String get onboardingHealthPermissionTitle => 'Allow Health Access';
@override
String get onboardingHealthPermissionBody =>
'DoubleFeel needs connected wearable health data to send reminders, count stress moments, and provide suggestions.';
'DoubleFeel uses health data to track stress and wellness.';
@override
String get onboardingHealthPermissionPrivacy =>
'Your health data is stored locally. We do not upload any related data.';
'Your health raw data stays private and is never uploaded.';
@override
String get onboardingNotificationTitle => 'Turn on notifications';
... ... @@ -226,28 +222,26 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingMemberAllOptions => 'View all purchase options';
@override
String get healthCompanionIsNowAvailable =>
'Health Companion is now available';
String get healthCompanionIsNowAvailable => 'Wellness Companion Activated';
@override
String get youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired =>
'You can now view each other\'s HRV, stress levels, and sleep patterns, and reach out to check in when the other person seems tired.';
'You can now track HRV, stress, and sleep changes, and share alerts with loved ones.';
@override
String get bindPartnerTitle =>
'Add a Close Contact\nOne more person to care about your health';
String get bindPartnerTitle => 'Add a Loved One\nFollow your health';
@override
String get bindPartnerMyId => 'My ID';
@override
String get bindPartnerShareMyCode => 'Share My Code';
String get bindPartnerShareMyCode => 'Share My ID';
@override
String get bindPartnerOr => 'or';
@override
String get bindPartnerContactId => 'Close Contact\'s ID';
String get bindPartnerContactId => 'Loved One’s ID';
@override
String get bindPartnerInputHint => 'Enter here';
... ... @@ -256,22 +250,22 @@ class AppLocalizationsEn extends AppLocalizations {
String get bindPartnerSkip => 'Maybe Later';
@override
String get onboardingResearchStress => 'High Stress';
String get onboardingResearchStress => 'Stressed';
@override
String get onboardingResearchRelaxed => 'Feeling Relaxed';
String get onboardingResearchRelaxed => 'Relaxed';
@override
String get onboardingResearchSick => 'Sick or Unwell';
String get onboardingResearchSick => 'Feeling sick Unwell';
@override
String get onboardingResearchHealthy => 'Feeling Great';
String get onboardingResearchHealthy => 'Recovering well';
@override
String get onboardingResearchPoorSleep => 'Poor Sleep';
@override
String get onboardingResearchGoodSleep => 'Good Sleep';
String get onboardingResearchGoodSleep => 'Well rested';
@override
String get loginSlogan =>
... ... @@ -287,16 +281,16 @@ class AppLocalizationsEn extends AppLocalizations {
String get loginLastUsed => 'Last used';
@override
String get loginAgreementPrefix => 'By clicking above, you agree to the ';
String get loginAgreementPrefix => 'By tapping, you agree to ';
@override
String get loginTerms => 'Terms of Service';
String get loginTerms => 'Terms';
@override
String get loginAgreementAnd => ' and ';
String get loginAgreementAnd => ' & ';
@override
String get loginPrivacy => 'Privacy Policy';
String get loginPrivacy => 'Policy';
@override
String get phoneLoginHello => 'Hello~';
... ... @@ -345,17 +339,17 @@ class AppLocalizationsEn extends AppLocalizations {
String get phoneLoginInvalidCode => 'Invalid verification code';
@override
String get todayHealthDataAuthTitle => 'Fetching health data';
String get todayHealthDataAuthTitle => 'Syncing Health Data';
@override
String get todayHealthDataAuthDescription =>
'DoubleFeel needs access to your Apple Health data to provide stress reminders, real-time stress statistics, and health suggestions.\nIf you have not authorized it yet, please click below to complete the authorization; if you have authorized it, it may take a few minutes to sync a large amount of health data for the first time, please try again later.';
'DoubleFeel needs access to your Apple Health data to provide stress insights, real-time stress tracking, and health recommendations.\nIf you haven’t granted access, please allow permissions below. If you have already granted access, syncing your health data may take a few minutes. Please try again later.';
@override
String get todayHealthDataAuthAction => 'Authorize health data access';
String get todayHealthDataAuthAction => 'Allow Health Access';
@override
String get measureYourHrvNow => 'Measure your HRV now';
String get measureYourHrvNow => 'How to take a measurement';
@override
String get todayBottomSheetGotIt => 'Got it';
... ...