From 18a15d617fe3db7fbf0c89e2a413ab419e773bf4 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Mon, 15 Feb 2021 16:58:49 +0900 Subject: [PATCH] removed dependencies on some trivial packages --- .../deckers/thibault/aves/MainActivity.kt | 4 +- .../aves/channel/calls/TimeHandler.kt | 19 ++++++++++ .../aves/channel/calls/WindowHandler.kt | 38 +++++++++++++++++++ lib/model/settings/screen_on.dart | 4 +- lib/model/source/media_store_source.dart | 4 +- lib/services/time_service.dart | 15 ++++++++ lib/services/window_service.dart | 16 ++++++++ lib/utils/constants.dart | 12 ------ lib/widgets/viewer/entry_viewer_stack.dart | 6 +-- pubspec.lock | 14 ------- pubspec.yaml | 2 - 11 files changed, 98 insertions(+), 36 deletions(-) create mode 100644 android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/TimeHandler.kt create mode 100644 android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/WindowHandler.kt create mode 100644 lib/services/time_service.dart create mode 100644 lib/services/window_service.dart diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt index 98e308d7f..7e4504e63 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt @@ -32,11 +32,13 @@ class MainActivity : FlutterActivity() { MethodChannel(messenger, AppAdapterHandler.CHANNEL).setMethodCallHandler(AppAdapterHandler(this)) MethodChannel(messenger, AppShortcutHandler.CHANNEL).setMethodCallHandler(AppShortcutHandler(this)) + MethodChannel(messenger, DebugHandler.CHANNEL).setMethodCallHandler(DebugHandler(this)) MethodChannel(messenger, ImageFileHandler.CHANNEL).setMethodCallHandler(ImageFileHandler(this)) MethodChannel(messenger, MediaStoreHandler.CHANNEL).setMethodCallHandler(MediaStoreHandler(this)) MethodChannel(messenger, MetadataHandler.CHANNEL).setMethodCallHandler(MetadataHandler(this)) MethodChannel(messenger, StorageHandler.CHANNEL).setMethodCallHandler(StorageHandler(this)) - MethodChannel(messenger, DebugHandler.CHANNEL).setMethodCallHandler(DebugHandler(this)) + MethodChannel(messenger, TimeHandler.CHANNEL).setMethodCallHandler(TimeHandler()) + MethodChannel(messenger, WindowHandler.CHANNEL).setMethodCallHandler(WindowHandler(this)) StreamsChannel(messenger, ImageByteStreamHandler.CHANNEL).setStreamHandlerFactory { args -> ImageByteStreamHandler(this, args) } StreamsChannel(messenger, ImageOpStreamHandler.CHANNEL).setStreamHandlerFactory { args -> ImageOpStreamHandler(this, args) } diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/TimeHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/TimeHandler.kt new file mode 100644 index 000000000..8a997b24a --- /dev/null +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/TimeHandler.kt @@ -0,0 +1,19 @@ +package deckers.thibault.aves.channel.calls + +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel +import io.flutter.plugin.common.MethodChannel.MethodCallHandler +import java.util.* + +class TimeHandler() : MethodCallHandler { + override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { + when (call.method) { + "getDefaultTimeZone" -> result.success(TimeZone.getDefault().id) + else -> result.notImplemented() + } + } + + companion object { + const val CHANNEL = "deckers.thibault/aves/time" + } +} \ No newline at end of file diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/WindowHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/WindowHandler.kt new file mode 100644 index 000000000..8f798fb7e --- /dev/null +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/WindowHandler.kt @@ -0,0 +1,38 @@ +package deckers.thibault.aves.channel.calls + +import android.app.Activity +import android.view.WindowManager +import deckers.thibault.aves.channel.calls.Coresult.Companion.safe +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel +import io.flutter.plugin.common.MethodChannel.MethodCallHandler + +class WindowHandler(private val activity: Activity) : MethodCallHandler { + override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { + when (call.method) { + "keepScreenOn" -> safe(call, result, ::keepScreenOn) + else -> result.notImplemented() + } + } + + private fun keepScreenOn(call: MethodCall, result: MethodChannel.Result) { + val on = call.argument("on") + if (on == null) { + result.error("keepOn-args", "failed because of missing arguments", null) + return + } + + val window = activity.window + val flag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + if (on) { + window.addFlags(flag) + } else { + window.clearFlags(flag) + } + result.success(null) + } + + companion object { + const val CHANNEL = "deckers.thibault/aves/window" + } +} \ No newline at end of file diff --git a/lib/model/settings/screen_on.dart b/lib/model/settings/screen_on.dart index dfb11e633..a11d3d7e4 100644 --- a/lib/model/settings/screen_on.dart +++ b/lib/model/settings/screen_on.dart @@ -1,4 +1,4 @@ -import 'package:screen/screen.dart'; +import 'package:aves/services/window_service.dart'; enum KeepScreenOn { never, viewerOnly, always } @@ -17,6 +17,6 @@ extension ExtraKeepScreenOn on KeepScreenOn { } void apply() { - Screen.keepOn(this == KeepScreenOn.always); + WindowService.keepScreenOn(this == KeepScreenOn.always); } } diff --git a/lib/model/source/media_store_source.dart b/lib/model/source/media_store_source.dart index d90a6a497..4f9d72ba7 100644 --- a/lib/model/source/media_store_source.dart +++ b/lib/model/source/media_store_source.dart @@ -8,11 +8,11 @@ import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_source.dart'; import 'package:aves/services/image_file_service.dart'; import 'package:aves/services/media_store_service.dart'; +import 'package:aves/services/time_service.dart'; import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/math_utils.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_native_timezone/flutter_native_timezone.dart'; import 'package:pedantic/pedantic.dart'; class MediaStoreSource extends CollectionSource { @@ -27,7 +27,7 @@ class MediaStoreSource extends CollectionSource { stateNotifier.value = SourceState.loading; await metadataDb.init(); await favourites.init(); - final currentTimeZone = await FlutterNativeTimezone.getLocalTimezone(); + final currentTimeZone = await TimeService.getDefaultTimeZone(); final catalogTimeZone = settings.catalogTimeZone; if (currentTimeZone != catalogTimeZone) { // clear catalog metadata to get correct date/times when moving to a different time zone diff --git a/lib/services/time_service.dart b/lib/services/time_service.dart new file mode 100644 index 000000000..07e8fb06e --- /dev/null +++ b/lib/services/time_service.dart @@ -0,0 +1,15 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +class TimeService { + static const platform = MethodChannel('deckers.thibault/aves/time'); + + static Future getDefaultTimeZone() async { + try { + return await platform.invokeMethod('getDefaultTimeZone'); + } on PlatformException catch (e) { + debugPrint('getDefaultTimeZone failed with code=${e.code}, exception=${e.message}, details=${e.details}'); + } + return null; + } +} diff --git a/lib/services/window_service.dart b/lib/services/window_service.dart new file mode 100644 index 000000000..81f38d1c6 --- /dev/null +++ b/lib/services/window_service.dart @@ -0,0 +1,16 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +class WindowService { + static const platform = MethodChannel('deckers.thibault/aves/window'); + + static Future keepScreenOn(bool on) async { + try { + await platform.invokeMethod('keepScreenOn', { + 'on': on, + }); + } on PlatformException catch (e) { + debugPrint('keepScreenOn failed with code=${e.code}, exception=${e.message}, details=${e.details}'); + } + } +} diff --git a/lib/utils/constants.dart b/lib/utils/constants.dart index b2284ba3b..2d2b8c137 100644 --- a/lib/utils/constants.dart +++ b/lib/utils/constants.dart @@ -143,12 +143,6 @@ class Constants { licenseUrl: 'https://github.com/flutter/flutter_markdown/blob/master/LICENSE', sourceUrl: 'https://github.com/flutter/flutter_markdown', ), - Dependency( - name: 'Flutter Native Timezone', - license: 'Apache 2.0', - licenseUrl: 'https://github.com/pinkfish/flutter_native_timezone/blob/master/LICENSE', - sourceUrl: 'https://github.com/pinkfish/flutter_native_timezone', - ), Dependency( name: 'Flutter Staggered Animations', license: 'MIT', @@ -257,12 +251,6 @@ class Constants { licenseUrl: 'https://github.com/rrousselGit/provider/blob/master/LICENSE', sourceUrl: 'https://github.com/rrousselGit/provider', ), - Dependency( - name: 'Screen', - license: 'MIT', - licenseUrl: 'https://github.com/clovisnicolas/flutter_screen/blob/master/LICENSE', - sourceUrl: 'https://github.com/clovisnicolas/flutter_screen', - ), Dependency( name: 'Shared Preferences', license: 'BSD 3-Clause', diff --git a/lib/widgets/viewer/entry_viewer_stack.dart b/lib/widgets/viewer/entry_viewer_stack.dart index d37847071..9f0cff0b6 100644 --- a/lib/widgets/viewer/entry_viewer_stack.dart +++ b/lib/widgets/viewer/entry_viewer_stack.dart @@ -6,6 +6,7 @@ import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/settings/screen_on.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_lens.dart'; +import 'package:aves/services/window_service.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/utils/change_notifier.dart'; import 'package:aves/widgets/collection/collection_page.dart'; @@ -26,7 +27,6 @@ import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; import 'package:flutter_ijkplayer/flutter_ijkplayer.dart'; import 'package:provider/provider.dart'; -import 'package:screen/screen.dart'; import 'package:tuple/tuple.dart'; class EntryViewerStack extends StatefulWidget { @@ -111,7 +111,7 @@ class _EntryViewerStackState extends State with SingleTickerPr WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addPostFrameCallback((_) => _initOverlay()); if (settings.keepScreenOn == KeepScreenOn.viewerOnly) { - Screen.keepOn(true); + WindowService.keepScreenOn(true); } } @@ -439,7 +439,7 @@ class _EntryViewerStackState extends State with SingleTickerPr void _onLeave() { _showSystemUI(); if (settings.keepScreenOn == KeepScreenOn.viewerOnly) { - Screen.keepOn(false); + WindowService.keepScreenOn(false); } } diff --git a/pubspec.lock b/pubspec.lock index a832d319c..28b4d8bd2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -330,13 +330,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.5.2" - flutter_native_timezone: - dependency: "direct main" - description: - name: flutter_native_timezone - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.4" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -779,13 +772,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.5" - screen: - dependency: "direct main" - description: - name: screen - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.5" shared_preferences: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 95b1178cc..6d5b589d8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -51,7 +51,6 @@ dependencies: url: git://github.com/deckerst/flutter_ijkplayer.git flutter_map: flutter_markdown: - flutter_native_timezone: flutter_staggered_animations: flutter_svg: geocoder: @@ -71,7 +70,6 @@ dependencies: permission_handler: printing: provider: - screen: shared_preferences: sqflite: streams_channel: