Commit a47bbf3a5a606633208d4de2d65c31e63b7791fe

Authored by 常守达
1 parent ebf17359

fix(today):首页健康卡片

... ... @@ -13,6 +13,7 @@ import 'package:doublefeel_flutter/core/network/api/health_api.dart';
import 'package:doublefeel_flutter/core/network/api/pay_api.dart';
import 'package:doublefeel_flutter/core/network/api/vip_api.dart';
import 'package:doublefeel_flutter/core/result/app_result.dart';
import 'package:doublefeel_flutter/core/services/loading_service.dart';
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
import 'package:doublefeel_flutter/core/util/app_toast.dart';
import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
... ... @@ -234,7 +235,8 @@ class TodayController extends GetMaterialController {
}
}
Future<void> requestHealthAuthorization() async {
Future<void> requestHealthAuthorization(
{bool isFromNoPermissionPage = false}) async {
if (GetPlatform.isIOS) {
try {
final result = await _hostApi.checkHealthAppAuthorization();
... ... @@ -243,17 +245,37 @@ class TodayController extends GetMaterialController {
bool success = await _hostApi.requestHealthClientAuthorization();
AppLogger.d("requestHealthClientAuthorization : $success");
if (success) {
_performDataUpload();
await LoadingService.instance.run(() async {
try {
final result = await _hostApi.performHealthUpload();
} catch (error, stackTrace) {
AppLogger.e('Apple Health upload failed', error, stackTrace);
}
});
result.status = 1;
checkHealthDataAuthCardVisible();
// AppToast.show('刷新完成');
if (isFromNoPermissionPage) {
Get.back();
}
} else {
// Get.to(NoHealthDataPage(
// onRefresh: _performDataUpload,
// ));
}
return;
}
if (result.status == 1) {
_performDataUpload();
} else if (result.status == 1) {
await LoadingService.instance.run(() async {
try {
final result = await _hostApi.performHealthUpload();
} catch (error, stackTrace) {
AppLogger.e('Apple Health upload failed', error, stackTrace);
}
});
checkHealthDataAuthCardVisible(result);
if (isFromNoPermissionPage) {
Get.back();
}
return;
}
// 打开苹果健康
... ... @@ -264,12 +286,13 @@ class TodayController extends GetMaterialController {
}
}
void onAuthorizeTap() {
Future<void> onAuthorizeTap() async {
if (showHealthDataAuthCardStatus.value == 1) {
return;
} else if (showHealthDataAuthCardStatus.value == 0) {
Get.to(NoHealthDataNoPermissionPage(
onRequest: requestHealthAuthorization,
onRequest: () =>
requestHealthAuthorization(isFromNoPermissionPage: true),
));
} else {
Get.to(NoHealthDataPage(
... ... @@ -295,9 +318,10 @@ class TodayController extends GetMaterialController {
}
}
Future<void> checkHealthDataAuthCardVisible() async {
Future<void> checkHealthDataAuthCardVisible(
[HealthAuthorization? preResult]) async {
try {
final result = await _hostApi.checkHealthAppAuthorization();
final result = preResult ?? await _hostApi.checkHealthAppAuthorization();
if (result.status == 1) {
await _performDataUpload();
... ...
... ... @@ -57,21 +57,22 @@ class TodayHealthDataAuthCard extends StatelessWidget {
thickness: 1,
color: colors.border,
),
const SizedBox(height: 20),
GestureDetector(
onTap: onAuthorizeTap,
behavior: HitTestBehavior.opaque,
child: Text(
l10n.todayHealthDataAuthAction,
style: TextStyle(
color: colors.primary,
fontSize: 12,
fontWeight: FontWeight.w500,
height: 1.2,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: Text(
l10n.todayHealthDataAuthAction,
style: TextStyle(
color: colors.primary,
fontSize: 12,
fontWeight: FontWeight.w500,
height: 1.2,
),
),
),
),
const SizedBox(height: 20),
],
),
);
... ...
... ... @@ -348,7 +348,11 @@ class _HrvResearchPageState extends State<_HrvResearchPage> {
void initState() {
super.initState();
_pageController = PageController(initialPage: _initialPage);
_startAutoScroll();
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
_startAutoScroll();
}
});
}
void _startAutoScroll() {
... ...
... ... @@ -180,7 +180,7 @@ class V2HealthData {
case 2:
return context.colors.chartGreen;
case 3:
return context.colors.chartPink;
return context.colors.chartOrange;
}
return null;
}
... ...