Commit dd3d32581d43477a7d244ad4b0f5531361437c4e

Authored by 常守达
1 parent f6a9f8ca

fix(today):仅下拉刷新展示loading

@@ -96,7 +96,7 @@ class TodayController extends GetMaterialController { @@ -96,7 +96,7 @@ class TodayController extends GetMaterialController {
96 final scrollOffset = 0.0.obs; 96 final scrollOffset = 0.0.obs;
97 final scrollController = ScrollController(); 97 final scrollController = ScrollController();
98 98
99 - final isLoadingToday = true.obs; 99 + final isLoadingToday = false.obs;
100 final showHealthDataAuthCardStatus = 1.obs; 100 final showHealthDataAuthCardStatus = 1.obs;
101 final stressSubtitle = ''.obs; 101 final stressSubtitle = ''.obs;
102 bool _isFirstLoad = true; 102 bool _isFirstLoad = true;
@@ -249,8 +249,11 @@ class TodayController extends GetMaterialController { @@ -249,8 +249,11 @@ class TodayController extends GetMaterialController {
249 return normalizedDate; 249 return normalizedDate;
250 } 250 }
251 251
252 - Future<void> loadDataForDate(DateTime date) async {  
253 - isLoadingToday.value = true; 252 + Future<void> loadDataForDate(DateTime date,
  253 + {bool isPullToRefresh = false}) async {
  254 + if (isPullToRefresh) {
  255 + isLoadingToday.value = true;
  256 + }
254 try { 257 try {
255 await Future.wait([ 258 await Future.wait([
256 _refreshHealthDataForDate(date), 259 _refreshHealthDataForDate(date),
@@ -329,7 +332,7 @@ class TodayController extends GetMaterialController { @@ -329,7 +332,7 @@ class TodayController extends GetMaterialController {
329 } 332 }
330 333
331 Future<void> checkHealthDataAuthCardVisible( 334 Future<void> checkHealthDataAuthCardVisible(
332 - [HealthAuthorization? preResult]) async { 335 + {bool isPullToRefresh = false}) async {
333 final firstTime = DateUtils.dateOnly( 336 final firstTime = DateUtils.dateOnly(
334 DateTime(lastSelectableDay.value.year, lastSelectableDay.value.month - 6, 337 DateTime(lastSelectableDay.value.year, lastSelectableDay.value.month - 6,
335 lastSelectableDay.value.day), 338 lastSelectableDay.value.day),
@@ -339,8 +342,7 @@ class TodayController extends GetMaterialController { @@ -339,8 +342,7 @@ class TodayController extends GetMaterialController {
339 firstSelectableDay.value = firstTime; 342 firstSelectableDay.value = firstTime;
340 } else { 343 } else {
341 try { 344 try {
342 - final result =  
343 - preResult ?? await _hostApi.checkHealthAppAuthorization(); 345 + final result = await _hostApi.checkHealthAppAuthorization();
344 ta.setSuperProperties( 346 ta.setSuperProperties(
345 {'health_data_permission': result.status.clamp(0, 1)}); 347 {'health_data_permission': result.status.clamp(0, 1)});
346 if (result.status == 1) { 348 if (result.status == 1) {
@@ -348,9 +350,11 @@ class TodayController extends GetMaterialController { @@ -348,9 +350,11 @@ class TodayController extends GetMaterialController {
348 uploaded: () async { 350 uploaded: () async {
349 showHealthDataAuthCardStatus.value = result.status; 351 showHealthDataAuthCardStatus.value = result.status;
350 }, 352 },
  353 + isPullToRefresh: isPullToRefresh,
351 ); 354 );
352 } else { 355 } else {
353 - unawaited(loadDataForDate(selectedDate.value)); 356 + unawaited(loadDataForDate(selectedDate.value,
  357 + isPullToRefresh: isPullToRefresh));
354 showHealthDataAuthCardStatus.value = result.status; 358 showHealthDataAuthCardStatus.value = result.status;
355 } 359 }
356 } catch (error, stackTrace) { 360 } catch (error, stackTrace) {
@@ -382,12 +386,14 @@ class TodayController extends GetMaterialController { @@ -382,12 +386,14 @@ class TodayController extends GetMaterialController {
382 showHealthDataAuthCardStatus.value = !hasUploaded ? -1 : result.status; 386 showHealthDataAuthCardStatus.value = !hasUploaded ? -1 : result.status;
383 } 387 }
384 388
385 - void _calculateHealthDataWithoutLoading({Future<void> Function()? uploaded}) { 389 + void _calculateHealthDataWithoutLoading(
  390 + {Future<void> Function()? uploaded, bool isPullToRefresh = false}) {
386 unawaited( 391 unawaited(
387 (() async { 392 (() async {
388 try { 393 try {
389 await _healthRawDataCoreService.startCoreCaculate(); 394 await _healthRawDataCoreService.startCoreCaculate();
390 - await loadDataForDate(selectedDate.value); 395 + await loadDataForDate(selectedDate.value,
  396 + isPullToRefresh: isPullToRefresh);
391 await uploaded?.call(); 397 await uploaded?.call();
392 } catch (error, stackTrace) { 398 } catch (error, stackTrace) {
393 AppLogger.e('Apple Health calculate failed', error, stackTrace); 399 AppLogger.e('Apple Health calculate failed', error, stackTrace);
@@ -701,7 +707,7 @@ class TodayController extends GetMaterialController { @@ -701,7 +707,7 @@ class TodayController extends GetMaterialController {
701 } 707 }
702 } 708 }
703 709
704 - Future<void> refreshTab() async { 710 + Future<void> refreshTab({bool isPullToRefresh = false}) async {
705 if (_isFirstLoad) { 711 if (_isFirstLoad) {
706 _isFirstLoad = false; 712 _isFirstLoad = false;
707 return; 713 return;
@@ -711,7 +717,7 @@ class TodayController extends GetMaterialController { @@ -711,7 +717,7 @@ class TodayController extends GetMaterialController {
711 // changeDate(today); 717 // changeDate(today);
712 checkAddFriendVisible(); 718 checkAddFriendVisible();
713 checkHrvAdBannerVisible(); 719 checkHrvAdBannerVisible();
714 - checkHealthDataAuthCardVisible(); 720 + checkHealthDataAuthCardVisible(isPullToRefresh: isPullToRefresh);
715 // await loadDataForDate(selectedDate.value); 721 // await loadDataForDate(selectedDate.value);
716 } 722 }
717 } 723 }
@@ -63,7 +63,8 @@ class TodayTabBody extends StatelessWidget { @@ -63,7 +63,8 @@ class TodayTabBody extends StatelessWidget {
63 }, 63 },
64 child: RefreshIndicator( 64 child: RefreshIndicator(
65 edgeOffset: pinnedHeaderHeight, 65 edgeOffset: pinnedHeaderHeight,
66 - onRefresh: () async => controller.refreshTab(), 66 + onRefresh: () async =>
  67 + controller.refreshTab(isPullToRefresh: true),
67 child: _buildDayScrollView(context, pinnedHeaderHeight), 68 child: _buildDayScrollView(context, pinnedHeaderHeight),
68 ), 69 ),
69 ), 70 ),