diff --git a/lib/main.dart b/lib/main.dart index c412aa0..f6b1d38 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,11 @@ import 'package:easy_cc_flutter/Utils/currency_utils.dart'; import 'package:easy_cc_flutter/data/network/backup_currency_api.dart'; import 'package:easy_cc_flutter/data/network/currency_api.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:home_widget/home_widget.dart'; import 'package:logger/logger.dart'; +import 'package:workmanager/workmanager.dart'; import 'data/model/currency.dart'; import 'data/prefs/preference_provider.dart'; @@ -24,7 +26,8 @@ Future main() async { runApp(const MyApp()); } -Future backgroundCallback(Uri? uri) async { +@pragma("vm:entry-point") +Future backgroundCallback(Uri? uri) async { PreferenceProvider prefs = PreferenceProvider(); await prefs.init(); CurrencyApi api = CurrencyApi.create(); @@ -35,7 +38,7 @@ Future backgroundCallback(Uri? uri) async { Map? querys = uri?.queryParameters; String? widgetId = querys?["id"]; - await updateWidget(widgetId, repository); + return await updateWidget(widgetId, repository); } else if (uri?.host == 'createwidget') { Map? querys = uri?.queryParameters; String? widgetId = querys?["id"]; @@ -45,26 +48,29 @@ Future backgroundCallback(Uri? uri) async { await HomeWidget.saveWidgetData("${widgetId}_from", from); await HomeWidget.saveWidgetData("${widgetId}_to", to); - await updateWidget(widgetId, repository); + return await updateWidget(widgetId, repository); } + return null; } -Future updateWidget(String? widgetId, Repository repository) async { +Future updateWidget(String? widgetId, Repository repository) async { String? from = await HomeWidget.getWidgetData("${widgetId}_from"); String? to = await HomeWidget.getWidgetData("${widgetId}_to"); if (from == null || to == null) { - return; + return false; } Currency currency = await repository.getConversationRateFromApi(from, to); await HomeWidget.saveWidgetData("${widgetId}_from", from); await HomeWidget.saveWidgetData("${widgetId}_to", to); - await HomeWidget.saveWidgetData("${widgetId}_rate", currency.rate.toString()); + await HomeWidget.saveWidgetData( + "${widgetId}_rate", currency.rate.toString()); await HomeWidget.saveWidgetData("${widgetId}_forced_update", true); - await HomeWidget.updateWidget(name: 'AppWidgetProvider', iOSName: 'AppWidgetProvider'); + return await HomeWidget.updateWidget( + name: 'AppWidgetProvider', iOSName: 'AppWidgetProvider'); } class MyApp extends StatelessWidget { diff --git a/pubspec.lock b/pubspec.lock index 83f4454..a03af1d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -288,7 +288,7 @@ packages: name: home_widget url: "https://pub.dartlang.org" source: hosted - version: "0.1.6" + version: "0.2.0+1" http_multi_server: dependency: transitive description: @@ -379,7 +379,7 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.1.5" meta: dependency: transitive description: @@ -622,7 +622,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.9.1" + version: "1.9.0" stack_trace: dependency: transitive description: @@ -685,7 +685,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.13" + version: "0.4.12" timing: dependency: transitive description: @@ -734,7 +734,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.2" watcher: dependency: transitive description: @@ -756,6 +756,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.0" + workmanager: + dependency: "direct main" + description: + name: workmanager + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.1" xdg_directories: dependency: transitive description: @@ -778,5 +785,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=2.18.0-190.0.dev <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2e911a3..c7e8276 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,7 +49,8 @@ dependencies: mockito: ^5.3.2 json_annotation: ^4.7.0 flutter_launcher_icons: ^0.10.0 - home_widget: ^0.1.6 + home_widget: ^0.2.0+1 + workmanager: ^0.5.1 dev_dependencies: flutter_test: