|
...
|
...
|
@@ -2,6 +2,7 @@ import 'package:doublefeel_flutter/app/modules/user_onboarding/views/user_onboar |
|
|
|
import 'package:doublefeel_flutter/app/modules/user_onboarding/widget/guide_common_scaffold.dart';
|
|
|
|
import 'package:doublefeel_flutter/app/modules/user_onboarding/widget/onboarding_common_widgets.dart';
|
|
|
|
import 'package:doublefeel_flutter/core/theme/app_theme.dart';
|
|
|
|
import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:get/get.dart';
|
|
...
|
...
|
@@ -13,8 +14,6 @@ class NoHealthDataPage extends StatelessWidget { |
|
|
|
this.onHelp,
|
|
|
|
});
|
|
|
|
|
|
|
|
static const _placeholderColor = Color(0xFFD9D9D9);
|
|
|
|
|
|
|
|
final VoidCallback? onRefresh;
|
|
|
|
final VoidCallback? onHelp;
|
|
|
|
|
|
...
|
...
|
@@ -44,11 +43,10 @@ class NoHealthDataPage extends StatelessWidget { |
|
|
|
children: [
|
|
|
|
const _PageHeading(),
|
|
|
|
const SizedBox(height: 24),
|
|
|
|
const _InfoCard(
|
|
|
|
_InfoCard(
|
|
|
|
path: 'assets/images/common/ic_apple_watch.png',
|
|
|
|
title: '错误1:Apple Watch 数据不可用',
|
|
|
|
body:
|
|
|
|
'看起来你在过去 12 个月内没有使用 Apple Watch。如果你刚开始使用 Apple Watch 并已启用所有数据权限,这条信息可能仍会出现。请继续佩戴 Apple Watch 以允许数据采集,或在首页手动添加 HRV 数据。',
|
|
|
|
title: context.l10n.noHealthDataError1Title,
|
|
|
|
body: context.l10n.noHealthDataError1Body,
|
|
|
|
),
|
|
|
|
const SizedBox(height: 12),
|
|
|
|
const _AuthorizationCard(),
|
|
...
|
...
|
@@ -65,7 +63,7 @@ class NoHealthDataPage extends StatelessWidget { |
|
|
|
vertical: 4,
|
|
|
|
),
|
|
|
|
child: Text(
|
|
|
|
'需要帮助?',
|
|
|
|
context.l10n.noHealthDataNeedHelp,
|
|
|
|
style: TextStyle(
|
|
|
|
color: context.colors.primary,
|
|
|
|
fontSize: 12,
|
|
...
|
...
|
@@ -126,7 +124,7 @@ class _TopBar extends StatelessWidget { |
|
|
|
onTap: onRefresh,
|
|
|
|
child: Center(
|
|
|
|
child: Text(
|
|
|
|
'刷新',
|
|
|
|
context.l10n.noHealthDataRefresh,
|
|
|
|
style: TextStyle(
|
|
|
|
color: context.colors.primary,
|
|
|
|
fontSize: 14,
|
|
...
|
...
|
@@ -153,7 +151,7 @@ class _PageHeading extends StatelessWidget { |
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: 21),
|
|
|
|
child: Text(
|
|
|
|
'无心率数据可用',
|
|
|
|
context.l10n.noHealthDataHeadingTitle,
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Color(0xFF14121E),
|
|
...
|
...
|
@@ -167,7 +165,7 @@ class _PageHeading extends StatelessWidget { |
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
|
|
child: Text(
|
|
|
|
'DoubleFeel无法从 Apple Health 获取你的 HRV 数据。请按照提示授予权限,然后点击右上角“刷新”继续。',
|
|
|
|
context.l10n.noHealthDataHeadingBody,
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
style: TextStyle(
|
|
|
|
color: context.colors.textPrimary,
|
|
...
|
...
|
@@ -253,7 +251,7 @@ class _AuthorizationCard extends StatelessWidget { |
|
|
|
),
|
|
|
|
SizedBox(height: 10),
|
|
|
|
Text(
|
|
|
|
'错误 2:健康数据访问未授权',
|
|
|
|
context.l10n.noHealthDataError2Title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 16,
|
|
...
|
...
|
@@ -263,7 +261,7 @@ class _AuthorizationCard extends StatelessWidget { |
|
|
|
),
|
|
|
|
SizedBox(height: 6),
|
|
|
|
Text(
|
|
|
|
'DoubleFeel 需要访问 Apple Health 数据的权限,以提供压力统计、提醒和建议。如果未授权,部分功能可能无法正常使用。\n\n请放心,所有健康数据仅存储在本地,不会上传。\n\n要启用权限,请按提示操作,并在 iOS 设置中选择 允许所有 → 健康 → DoubleFeel。',
|
|
|
|
context.l10n.noHealthDataError2Body,
|
|
|
|
style: TextStyle(
|
|
|
|
color: context.colors.textSecondary,
|
|
|
|
fontSize: 12,
|
|
...
|
...
|
@@ -323,7 +321,7 @@ class _SystemIssueCard extends StatelessWidget { |
|
|
|
),
|
|
|
|
SizedBox(height: 10),
|
|
|
|
Text(
|
|
|
|
'错误 3:系统问题',
|
|
|
|
context.l10n.noHealthDataError3Title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 16,
|
|
...
|
...
|
@@ -333,14 +331,7 @@ class _SystemIssueCard extends StatelessWidget { |
|
|
|
),
|
|
|
|
SizedBox(height: 6),
|
|
|
|
Text(
|
|
|
|
'根据用户反馈,我们发现 HRV 或心率数据可能缺失的两个原因:\n\n'
|
|
|
|
'1. Apple Watch 未连接\n'
|
|
|
|
' · 如果你的 Apple Watch 长时间未佩戴,心率数据可能无法采集。\n'
|
|
|
|
' · 请检查 iOS 健康 App → “我的手表”,确认最近的心率数据是否在佩戴 Apple Watch 时记录。\n'
|
|
|
|
' · 如果没有,请尝试佩戴 Apple Watch 进行数据采集,并打开 Apple 支持的心率功能。\n\n'
|
|
|
|
'2. 过去 30 天的心率或 HRV 数据缺失\n'
|
|
|
|
' · 打开 iOS 健康 App → 浏览 → “心率” 或 “HRV” → “未找到数据”,确认是否缺失。\n'
|
|
|
|
' · 如果数据缺失,请重新佩戴手表,并重启 iPhone 和 Apple Watch 后,再次打开 DoubleFeel。',
|
|
|
|
context.l10n.noHealthDataError3Body,
|
|
|
|
style: TextStyle(
|
|
|
|
color: context.colors.textSecondary,
|
|
|
|
fontSize: 12,
|
|
...
|
...
|
@@ -373,19 +364,6 @@ class _CardShell extends StatelessWidget { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class _IconPlaceholder extends StatelessWidget {
|
|
|
|
const _IconPlaceholder();
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Container(
|
|
|
|
width: 56,
|
|
|
|
height: 56,
|
|
|
|
color: NoHealthDataPage._placeholderColor,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class NoHealthDataNoPermissionPage extends StatelessWidget {
|
|
|
|
const NoHealthDataNoPermissionPage({
|
|
|
|
super.key,
|
|
...
|
...
|
@@ -403,7 +381,7 @@ class NoHealthDataNoPermissionPage extends StatelessWidget { |
|
|
|
child: GuideCommonScaffold(
|
|
|
|
onBackPressed: Get.back,
|
|
|
|
bottom: OnboardingBottomButton(
|
|
|
|
label: '前往开启',
|
|
|
|
label: context.l10n.noHealthDataGoToSettings,
|
|
|
|
enabled: true,
|
|
|
|
onPressed: () {
|
|
|
|
onRequest?.call();
|
...
|
...
|
|