This commit is contained in:
Shawn 2024-01-22 15:08:58 -07:00
parent b28c6994f7
commit 9d2409cc9d
2 changed files with 13 additions and 14 deletions

View File

@ -1,11 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'package:home_widget/home_widget.dart'; import 'package:http/http.dart' as http;
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/common/platform_info.dart'; import 'package:wonders/logic/common/platform_info.dart';
import 'package:wonders/logic/common/save_load_mixin.dart'; import 'package:wonders/logic/common/save_load_mixin.dart';
import 'package:wonders/logic/data/collectible_data.dart'; import 'package:wonders/logic/data/collectible_data.dart';
import 'package:http/http.dart' as http;
import 'package:wonders/logic/native_widget_service.dart'; import 'package:wonders/logic/native_widget_service.dart';
class CollectiblesLogic with ThrottledSaveLoadMixin { class CollectiblesLogic with ThrottledSaveLoadMixin {
@ -42,7 +41,7 @@ class CollectiblesLogic with ThrottledSaveLoadMixin {
statesById.value = states; statesById.value = states;
if (state == CollectibleState.discovered) { if (state == CollectibleState.discovered) {
final data = fromId(id)!; final data = fromId(id)!;
_updateHomeWidgetTextData( _updateNativeWidgetTextData(
title: data.title, title: data.title,
id: data.id, id: data.id,
imageUrl: data.imageUrlSmall, imageUrl: data.imageUrlSmall,
@ -58,11 +57,9 @@ class CollectiblesLogic with ThrottledSaveLoadMixin {
if (state == CollectibleState.explored) _exploredCount++; if (state == CollectibleState.explored) _exploredCount++;
}); });
final foundCount = discoveredCount + exploredCount; final foundCount = discoveredCount + exploredCount;
if (PlatformInfo.isIOS) { _nativeWidget.save<int>('discoveredCount', foundCount).then((value) {
_nativeWidget.save<int>('discoveredCount', foundCount).then((value) { _nativeWidget.markDirty();
_nativeWidget.markDirty(); });
});
}
debugPrint('setting discoveredCount for home widget $foundCount'); debugPrint('setting discoveredCount for home widget $foundCount');
} }
@ -95,13 +92,15 @@ class CollectiblesLogic with ThrottledSaveLoadMixin {
for (int i = 0; i < all.length; i++) { for (int i = 0; i < all.length; i++) {
states[all[i].id] = CollectibleState.lost; states[all[i].id] = CollectibleState.lost;
} }
_updateHomeWidgetTextData(); // clear home widget data if (_nativeWidget.isSupported) {
_updateNativeWidgetTextData(); // clear home widget data
}
statesById.value = states; statesById.value = states;
debugPrint('collection reset'); debugPrint('collection reset');
scheduleSave(); scheduleSave();
} }
Future<void> _updateHomeWidgetTextData({String title = '', String id = '', String imageUrl = ''}) async { Future<void> _updateNativeWidgetTextData({String title = '', String id = '', String imageUrl = ''}) async {
// Save title // Save title
await _nativeWidget.save<String>('lastDiscoveredTitle', title); await _nativeWidget.save<String>('lastDiscoveredTitle', title);
// Subtitle // Subtitle

View File

@ -6,15 +6,15 @@ class NativeWidgetService {
static const _iosAppGroupId = 'group.com.gskinner.flutter.wonders.widget'; static const _iosAppGroupId = 'group.com.gskinner.flutter.wonders.widget';
static const _iosAppName = 'WonderousWidget'; static const _iosAppName = 'WonderousWidget';
static final bool _isSupported = PlatformInfo.isIOS; final bool isSupported = PlatformInfo.isIOS;
Future<void> init() async { Future<void> init() async {
if (!_isSupported) return; if (!isSupported) return;
await HomeWidget.setAppGroupId(_iosAppGroupId); await HomeWidget.setAppGroupId(_iosAppGroupId);
} }
Future<bool?> save<T>(String s, T value, {void Function(bool?)? onSaveComplete}) async { Future<bool?> save<T>(String s, T value, {void Function(bool?)? onSaveComplete}) async {
if (!_isSupported) return false; if (!isSupported) return false;
return await HomeWidget.saveWidgetData<T>(s, value).then((value) { return await HomeWidget.saveWidgetData<T>(s, value).then((value) {
onSaveComplete?.call(value); onSaveComplete?.call(value);
return null; return null;
@ -22,7 +22,7 @@ class NativeWidgetService {
} }
Future<bool?> markDirty() async { Future<bool?> markDirty() async {
if (!_isSupported) return false; if (!isSupported) return false;
return await HomeWidget.updateWidget(iOSName: _iosAppName); return await HomeWidget.updateWidget(iOSName: _iosAppName);
} }
} }