From 7e5885e5c8f66375ffed9e65188e5d6ac8a16aa9 Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Tue, 10 Dec 2024 20:38:09 +0100 Subject: [PATCH 1/4] chore: cleanup fvm configuration I guess fvm changed the way it does it's configuration at some point, but rather than having .fvm/fmv_config.json checked in .fvmrc should be checked in. The .fvm directory is used to store files and symlinks related to the installed Flutter version and as such should not be commited at all. --- .fvm/fvm_config.json | 4 ---- .fvmrc | 4 ++++ .gitignore | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 .fvm/fvm_config.json create mode 100644 .fvmrc diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json deleted file mode 100644 index 5cb9b8f..0000000 --- a/.fvm/fvm_config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "flutterSdkVersion": "3.7.11", - "flavors": {} -} \ No newline at end of file diff --git a/.fvmrc b/.fvmrc new file mode 100644 index 0000000..14b86e4 --- /dev/null +++ b/.fvmrc @@ -0,0 +1,4 @@ +{ + "flutter": "3.7.11", + "flavors": {} +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0574f2a..35f1790 100644 --- a/.gitignore +++ b/.gitignore @@ -45,5 +45,5 @@ app.*.map.json /.env *.sqlite* -/.fvm/flutter_sdk +.fvm/ *.keystore From fc0daacfc00f2608efc6b16d4a5424c2f8b1c4fb Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Tue, 10 Dec 2024 20:40:02 +0100 Subject: [PATCH 2/4] chore: ignore VSCode's settings.json in git Seettings in there can be different per user and should be, it should not be committed --- .gitignore | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 35f1790..d0b2324 100644 --- a/.gitignore +++ b/.gitignore @@ -16,10 +16,8 @@ migrate_working_dir/ *.iws .idea/ -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ +# VSCode related +.vscode/settings.json # Flutter/Dart/Pub related **/doc/api/ From 686e0a2dba55a4669c256dfa063a50818a44409d Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Tue, 10 Dec 2024 21:30:51 +0100 Subject: [PATCH 3/4] chore: upgrade to Flutter 3.24.5 At the time of writing the latest Flutter version. --- .fvmrc | 2 +- android/app/build.gradle | 23 +- .../app/FlutterMultiDexApplication.java | 25 - android/build.gradle | 15 +- android/settings.gradle | 30 +- lib/app/context_menus.dart | 2 +- lib/app/hooks/use_download_actions.dart | 4 +- lib/app/images.dart | 2 +- lib/app/lists.dart | 1 + lib/app/now_playing_bar.dart | 10 +- lib/app/pages/bottom_nav_page.dart | 6 +- lib/app/pages/now_playing_page.dart | 14 +- lib/app/pages/settings_page.dart | 2 +- lib/app/pages/source_page.dart | 5 +- lib/services/download_service.dart | 6 +- lib/sources/subsonic/source.dart | 2 +- lib/state/theme.dart | 15 +- pubspec.lock | 632 +++++++++--------- pubspec.yaml | 4 +- 19 files changed, 401 insertions(+), 399 deletions(-) delete mode 100644 android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java diff --git a/.fvmrc b/.fvmrc index 14b86e4..679f8e1 100644 --- a/.fvmrc +++ b/.fvmrc @@ -1,4 +1,4 @@ { - "flutter": "3.7.11", + "flutter": "3.24.5", "flavors": {} } \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index aa6b4ec..2bc03f4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,10 +22,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { @@ -53,7 +50,7 @@ android { applicationId "com.subtracks2" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 19 + minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -81,8 +78,4 @@ android { flutter { source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} +} \ No newline at end of file diff --git a/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java deleted file mode 100644 index 752fc18..0000000 --- a/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java +++ /dev/null @@ -1,25 +0,0 @@ -// Generated file. -// -// If you wish to remove Flutter's multidex support, delete this entire file. -// -// Modifications to this file should be done in a copy under a different name -// as this file may be regenerated. - -package io.flutter.app; - -import android.app.Application; -import android.content.Context; -import androidx.annotation.CallSuper; -import androidx.multidex.MultiDex; - -/** - * Extension of {@link android.app.Application}, adding multidex support. - */ -public class FlutterMultiDexApplication extends Application { - @Override - @CallSuper - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - MultiDex.install(this); - } -} diff --git a/android/build.gradle b/android/build.gradle index 58a8c74..bc157bd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() @@ -26,6 +13,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..ce6907c 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.2.0" apply false + id "org.jetbrains.kotlin.android" version "2.0.21" apply false +} + +include ":app" \ No newline at end of file diff --git a/lib/app/context_menus.dart b/lib/app/context_menus.dart index c051d13..c562bc8 100644 --- a/lib/app/context_menus.dart +++ b/lib/app/context_menus.dart @@ -25,7 +25,7 @@ Future showContextMenu({ required WidgetBuilder builder, }) { return showModalBottomSheet( - backgroundColor: ref.read(baseThemeProvider).theme.colorScheme.background, + backgroundColor: ref.read(baseThemeProvider).theme.colorScheme.surface, useRootNavigator: true, isScrollControlled: true, context: context, diff --git a/lib/app/hooks/use_download_actions.dart b/lib/app/hooks/use_download_actions.dart index 4d2aa70..579b9e6 100644 --- a/lib/app/hooks/use_download_actions.dart +++ b/lib/app/hooks/use_download_actions.dart @@ -112,9 +112,9 @@ List useListDownloadActions({ DownloadAction cancel() { return DownloadAction( type: DownloadActionType.cancel, - iconBuilder: (context) => Stack( + iconBuilder: (context) => const Stack( alignment: Alignment.center, - children: const [ + children: [ Icon(Icons.cancel_rounded), SizedBox( height: 32, diff --git a/lib/app/images.dart b/lib/app/images.dart index c158570..6867576 100644 --- a/lib/app/images.dart +++ b/lib/app/images.dart @@ -213,7 +213,7 @@ class CardClip extends StatelessWidget { final cardShape = Theme.of(context).cardTheme.shape; return ClipRRect( borderRadius: - cardShape is RoundedRectangleBorder ? cardShape.borderRadius : null, + cardShape is RoundedRectangleBorder ? cardShape.borderRadius : BorderRadius.zero, child: !square ? child : AspectRatio( diff --git a/lib/app/lists.dart b/lib/app/lists.dart index 3b5c552..ccb3f23 100644 --- a/lib/app/lists.dart +++ b/lib/app/lists.dart @@ -127,6 +127,7 @@ class SyncAllRefresh extends HookConsumerWidget { try { await ref.read(syncServiceProvider.notifier).syncAll(); } catch (e) { + if (!context.mounted) return; showErrorSnackbar(context, e.toString()); } }, diff --git a/lib/app/now_playing_bar.dart b/lib/app/now_playing_bar.dart index ba5300a..a718847 100644 --- a/lib/app/now_playing_bar.dart +++ b/lib/app/now_playing_bar.dart @@ -30,13 +30,13 @@ class NowPlayingBar extends HookConsumerWidget { elevation: 3, color: colors?.darkBackground, // surfaceTintColor: theme?.colorScheme.background, - child: Column( + child: const Column( children: [ SizedBox( height: 70, child: Row( mainAxisSize: MainAxisSize.max, - children: const [ + children: [ Padding( padding: EdgeInsets.all(10), child: _ArtImage(), @@ -54,7 +54,7 @@ class NowPlayingBar extends HookConsumerWidget { ], ), ), - const _ProgressBar(), + _ProgressBar(), ], ), ), @@ -173,7 +173,7 @@ class PlayPauseButton extends HookConsumerWidget { width: size / 3, child: CircularProgressIndicator( strokeWidth: size / 16, - color: Theme.of(context).colorScheme.background, + color: Theme.of(context).colorScheme.surface, ), ), ], @@ -195,7 +195,7 @@ class PlayPauseButton extends HookConsumerWidget { } }, icon: icon, - color: Theme.of(context).colorScheme.onBackground, + color: Theme.of(context).colorScheme.surface, ); } } diff --git a/lib/app/pages/bottom_nav_page.dart b/lib/app/pages/bottom_nav_page.dart index 5a5a3be..e5dbcdc 100644 --- a/lib/app/pages/bottom_nav_page.dart +++ b/lib/app/pages/bottom_nav_page.dart @@ -111,13 +111,13 @@ class OfflineIndicator extends HookConsumerWidget { ), child: FilledButton.tonal( style: const ButtonStyle( - padding: MaterialStatePropertyAll( + padding: WidgetStatePropertyAll( EdgeInsets.zero, ), - fixedSize: MaterialStatePropertyAll( + fixedSize: WidgetStatePropertyAll( Size(42, 42), ), - minimumSize: MaterialStatePropertyAll( + minimumSize: WidgetStatePropertyAll( Size(42, 42), ), ), diff --git a/lib/app/pages/now_playing_page.dart b/lib/app/pages/now_playing_page.dart index 8eecb00..426955b 100644 --- a/lib/app/pages/now_playing_page.dart +++ b/lib/app/pages/now_playing_page.dart @@ -55,13 +55,13 @@ class NowPlayingPage extends HookConsumerWidget { ], ), ), - body: Stack( + body: const Stack( children: [ - const MediaItemGradient(), + MediaItemGradient(), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 8), + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8), child: Column( - children: const [ + children: [ Expanded( child: Padding( padding: EdgeInsets.symmetric(horizontal: 16), @@ -229,8 +229,8 @@ class _Progress extends HookConsumerWidget { value: changing.value ? changeValue.value : position.toDouble(), min: 0, max: max(duration.toDouble(), position.toDouble()), - thumbColor: colors?.theme.colorScheme.onBackground, - activeColor: colors?.theme.colorScheme.onBackground, + thumbColor: colors?.theme.colorScheme.surface, + activeColor: colors?.theme.colorScheme.surface, inactiveColor: colors?.theme.colorScheme.surface, onChanged: (value) { changeValue.value = value; @@ -354,7 +354,7 @@ class _Controls extends HookConsumerWidget { final audio = ref.watch(audioControlProvider); return IconTheme( - data: IconThemeData(color: base.theme.colorScheme.onBackground), + data: IconThemeData(color: base.theme.colorScheme.surface), child: Column( children: [ SizedBox( diff --git a/lib/app/pages/settings_page.dart b/lib/app/pages/settings_page.dart index ab90bdf..1af0854 100644 --- a/lib/app/pages/settings_page.dart +++ b/lib/app/pages/settings_page.dart @@ -191,7 +191,7 @@ class _ShareLogsButton extends StatelessWidget { final files = await logFiles(); if (files.isEmpty) return; - // ignore: use_build_context_synchronously + if (!context.mounted) return; final value = await showDialog( context: context, builder: (context) => MultipleChoiceDialog( diff --git a/lib/app/pages/source_page.dart b/lib/app/pages/source_page.dart index 8e635c2..6f44a71 100644 --- a/lib/app/pages/source_page.dart +++ b/lib/app/pages/source_page.dart @@ -76,8 +76,8 @@ class SourcePage extends HookConsumerWidget { onChanged: (value) => forcePlaintextPassword.value = value, ); - return WillPopScope( - onWillPop: () async => !isSaving.value && !isDeleting.value, + return PopScope( + canPop: !isSaving.value && !isDeleting.value, child: Scaffold( appBar: AppBar(), floatingActionButton: Row( @@ -164,6 +164,7 @@ class SourcePage extends HookConsumerWidget { ); } } catch (e, st) { + if (!context.mounted) return; showErrorSnackbar(context, e.toString()); log.severe('Saving source', e, st); error = true; diff --git a/lib/services/download_service.dart b/lib/services/download_service.dart index 7955944..0638423 100644 --- a/lib/services/download_service.dart +++ b/lib/services/download_service.dart @@ -534,7 +534,7 @@ class DownloadService extends _$DownloadService { _port.asyncMap((dynamic data) async { final taskId = (data as List)[0] as String; - final status = DownloadTaskStatus(data[1] as int); + final status = DownloadTaskStatus.fromInt(data[1] as int); final progress = data[2] as int; var download = state.downloads.firstWhereOrNull( @@ -579,11 +579,11 @@ class DownloadService extends _$DownloadService { @pragma('vm:entry-point') static void downloadCallback( String id, - DownloadTaskStatus status, + int status, int progress, ) { IsolateNameServer.lookupPortByName('downloader_send_port')?.send( - [id, status.value, progress], + [id, status, progress], ); } } diff --git a/lib/sources/subsonic/source.dart b/lib/sources/subsonic/source.dart index 15207ed..ada9277 100644 --- a/lib/sources/subsonic/source.dart +++ b/lib/sources/subsonic/source.dart @@ -144,7 +144,7 @@ class SubsonicSource implements MusicSource { return Uri.tryParse(res.xml .getElement('artistInfo2') ?.getElement(thumbnail ? 'smallImageUrl' : 'largeImageUrl') - ?.text ?? + ?.value ?? ''); } diff --git a/lib/state/theme.dart b/lib/state/theme.dart index da78ae8..407e815 100644 --- a/lib/state/theme.dart +++ b/lib/state/theme.dart @@ -87,7 +87,6 @@ ColorTheme _colorTheme(_ColorThemeRef ref, Palette palette) { final colorScheme = ColorScheme.fromSeed( brightness: Brightness.dark, seedColor: background?.color ?? Colors.purple[800]!, - background: background?.color, primaryContainer: primary?.color, onPrimaryContainer: primary?.bodyTextColor, secondaryContainer: secondary?.color, @@ -96,8 +95,8 @@ ColorTheme _colorTheme(_ColorThemeRef ref, Palette palette) { surfaceTint: vibrant?.color, ); - final hsv = HSVColor.fromColor(colorScheme.background); - final hsl = HSLColor.fromColor(colorScheme.background); + final hsv = HSVColor.fromColor(colorScheme.surface); + final hsl = HSLColor.fromColor(colorScheme.surface); return base.copyWith( theme: ThemeData( @@ -106,7 +105,7 @@ ColorTheme _colorTheme(_ColorThemeRef ref, Palette palette) { brightness: base.theme.brightness, cardTheme: base.theme.cardTheme, ), - gradientHigh: colorScheme.background, + gradientHigh: colorScheme.surface, darkBackground: hsv.withValue(kDarkBackgroundValue).toColor(), darkerBackground: hsl.withLightness(kDarkerBackgroundLightness).toColor(), onDarkerBackground: @@ -128,13 +127,13 @@ ColorTheme baseTheme(BaseThemeRef ref) { ), ); - final hsv = HSVColor.fromColor(theme.colorScheme.background); - final hsl = HSLColor.fromColor(theme.colorScheme.background); + final hsv = HSVColor.fromColor(theme.colorScheme.surface); + final hsl = HSLColor.fromColor(theme.colorScheme.surface); return ColorTheme( theme: theme, - gradientHigh: theme.colorScheme.background, - gradientLow: HSLColor.fromColor(theme.colorScheme.background) + gradientHigh: theme.colorScheme.surface, + gradientLow: HSLColor.fromColor(theme.colorScheme.surface) .withLightness(0.06) .toColor(), darkBackground: hsv.withValue(kDarkBackgroundValue).toColor(), diff --git a/pubspec.lock b/pubspec.lock index 1d12ea2..bbd20b3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: a36ec4843dc30ea6bf652bf25e3448db6c5e8bcf4aa55f063a5d1dad216d8214 + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a url: "https://pub.dev" source: hosted - version: "58.0.0" + version: "61.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: cc4242565347e98424ce9945c819c192ec0838cb9d1f6aa4a97cc96becbc5b27 + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 url: "https://pub.dev" source: hosted - version: "5.10.0" + version: "5.13.0" analyzer_plugin: dependency: transitive description: @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.6.0" async: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" audio_service: dependency: "direct main" description: @@ -54,26 +54,26 @@ packages: dependency: transitive description: name: audio_service_platform_interface - sha256: "2c3a1d52803931e836b9693547a71c0c3585ad54219d2214219ed5cfcc3c1af4" + sha256: "8431a455dac9916cc9ee6f7da5620a666436345c906ad2ebb7fa41d18b3c1bf4" url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.1.1" audio_service_web: dependency: transitive description: name: audio_service_web - sha256: "523e64ddc914c714d53eec2da85bba1074f08cf26c786d4efb322de510815ea7" + sha256: "4cdc2127cd4562b957fb49227dc58e3303fafb09bde2573bc8241b938cf759d9" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.3" audio_session: dependency: transitive description: name: audio_session - sha256: e4acc4e9eaa32436dfc5d7aed7f0a370f2d7bb27ee27de30d6c4f220c2a05c73 + sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261" url: "https://pub.dev" source: hosted - version: "0.1.13" + version: "0.1.21" auto_route: dependency: "direct main" description: @@ -110,10 +110,10 @@ packages: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.1" build_config: dependency: transitive description: @@ -126,34 +126,34 @@ packages: dependency: transitive description: name: build_daemon - sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "4.0.2" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: b0a8a7b8a76c493e85f1b84bffa0588859a06197863dba8c9036b15581fd9727 + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.13" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.2.7" + version: "7.3.2" built_collection: dependency: transitive description: @@ -166,74 +166,66 @@ packages: dependency: transitive description: name: built_value - sha256: "31b7c748fd4b9adf8d25d72a4c4a59ef119f12876cf414f94f8af5131d5fa2b0" + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.4.4" + version: "8.9.2" cached_network_image: dependency: "direct main" description: name: cached_network_image - sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.3.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "4.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 + sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" characters: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" charcode: dependency: transitive description: name: charcode - sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.0" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.2" - ci: - dependency: transitive - description: - name: ci - sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" - url: "https://pub.dev" - source: hosted - version: "0.1.0" + version: "2.0.3" cli_util: dependency: transitive description: name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.2" clock: dependency: transitive description: @@ -246,26 +238,26 @@ packages: dependency: transitive description: name: code_builder - sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.10.1" collection: dependency: "direct main" description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: name: connectivity_plus - sha256: d73575bb66216738db892f72ba67dc478bd3b5490fbbcf43644b57645eabc822 + sha256: b74247fad72c171381dbe700ca17da24deac637ab6d43c343b42867acb95c991 url: "https://pub.dev" source: hosted - version: "3.0.4" + version: "3.0.6" connectivity_plus_platform_interface: dependency: transitive description: @@ -278,82 +270,74 @@ packages: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" coverage: dependency: transitive description: name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" + sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43 url: "https://pub.dev" source: hosted - version: "1.6.3" + version: "1.11.1" cross_file: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.4+2" crypto: dependency: "direct main" description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.2" - custom_lint: - dependency: transitive - description: - name: custom_lint - sha256: "80ccf10b30d4f1d0b40bd6d276a86d72266569c0a7542f1b839daf2fd05c16a5" - url: "https://pub.dev" - source: hosted - version: "0.3.3" + version: "3.0.6" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: "83bf91d1e4ef2a893bd9a7cefaede25a4e93b47779f71a2fed33d9122e3f02c9" + sha256: a85e8f78f4c52f6c63cdaf8c872eb573db0231dcdf3c3a5906d493c1f8bc20e6 url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.6.3" dart_style: dependency: transitive description: name: dart_style - sha256: "6d691edde054969f0e0f26abb1b30834b5138b963793e56f69d3a9a4435e6352" + sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" dbus: dependency: transitive description: name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" url: "https://pub.dev" source: hosted - version: "0.7.8" + version: "0.7.10" drift: dependency: "direct main" description: name: drift - sha256: "1eaef0a152f1b3dc2e3ad3b04f900794bbe5a2833c26a85794ed1f7e5b7320ce" + sha256: b50a8342c6ddf05be53bda1d246404cbad101b64dc73e8d6d1ac1090d119b4e2 url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.15.0" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: b6c2b1bcf637d34142bf9a0c21d1d290ade2254538be00559360db165b524381 + sha256: c037d9431b6f8dc633652b1469e5f53aaec6e4eb405ed29dd232fa888ef10d88 url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.15.0" fake_async: dependency: transitive description: @@ -366,71 +350,63 @@ packages: dependency: "direct main" description: name: fast_immutable_collections - sha256: "60d68b272a33f919da05cd5f6dddcc69f62ace6a81b29f87a23b54a9126c971e" + sha256: b910ccdc99bb38a2abbce07c5afb8f81d4e222a892e4d095a548b99814837b0c url: "https://pub.dev" source: hosted - version: "9.0.0" + version: "9.2.1" ffi: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.3" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.1" fixnum: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" - source: hosted - version: "0.7.0" flutter_cache_manager: dependency: "direct main" description: name: flutter_cache_manager - sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3" + sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" flutter_dotenv: dependency: "direct main" description: name: flutter_dotenv - sha256: d9283d92059a22e9834bc0a31336658ffba77089fb6f3cc36751f1fc7c6661a3 + sha256: b7c7be5cd9f6ef7a78429cabd2774d3c4af50e79cb2b7593e3d5d763ef95c61b url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "5.2.1" flutter_downloader: dependency: "direct main" description: name: flutter_downloader - sha256: "6f2836668f33d0cd3ed275c3198d30967c42af53fa9b18c6b0edbf5fc12b599a" + sha256: b6da5495b6258aa7c243d0f0a5281e3430b385bccac11cc508f981e653b25aa6 url: "https://pub.dev" source: hosted - version: "1.10.2" + version: "1.11.8" flutter_hooks: dependency: "direct main" description: @@ -443,10 +419,10 @@ packages: dependency: "direct main" description: name: flutter_keyboard_visibility - sha256: "86b71bbaffa38e885f5c21b1182408b9be6951fd125432cf6652c636254cef2d" + sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb" url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "5.4.1" flutter_keyboard_visibility_linux: dependency: transitive description: @@ -491,10 +467,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" flutter_localizations: dependency: "direct main" description: flutter @@ -504,10 +480,10 @@ packages: dependency: transitive description: name: flutter_riverpod - sha256: "812dfbb87af51e73e68ea038bcfd1c732078d6838d3388d03283db7dec0d1e5f" + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.6.1" flutter_staggered_grid_view: dependency: "direct main" description: @@ -520,10 +496,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: f991fdb1533c3caeee0cdc14b04f50f0c3916f0dbcbc05237ccbe4e3c6b93f3f + sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.9" flutter_test: dependency: "direct dev" description: flutter @@ -538,58 +514,58 @@ packages: dependency: "direct dev" description: name: freezed - sha256: e819441678f1679b719008ff2ff0ef045d66eed9f9ec81166ca0d9b02a187454 + sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.5.2" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.4" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" glob: dependency: transitive description: name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" graphs: dependency: transitive description: name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.2" hooks_riverpod: dependency: "direct main" description: name: hooks_riverpod - sha256: eceb62b7e3a18e6c2831498c3f2ea5b42c0a938c95d0c1eb1b8a7ccdd022accc + sha256: "70bba33cfc5670c84b796e6929c54b8bc5be7d0fe15bb28c2560500b9ad06966" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.6.1" http: dependency: "direct main" description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http_multi_server: dependency: transitive description: @@ -618,114 +594,138 @@ packages: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.18.1" io: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" js: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.9.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: dadc08bd61f72559f938dd08ec20dbfec6c709bba83515085ea943d2078d187a + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b url: "https://pub.dev" source: hosted - version: "6.6.1" + version: "6.8.0" just_audio: dependency: "direct main" description: name: just_audio - sha256: "7e6d31508dacd01a066e3889caf6282e5f1eb60707c230203b21a83af5c55586" + sha256: a49e7120b95600bd357f37a2bb04cd1e88252f7cdea8f3368803779b925b1049 url: "https://pub.dev" source: hosted - version: "0.9.32" + version: "0.9.42" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface - sha256: eff112d5138bea3ba544b6338b1e0537a32b5e1425e4d0dc38f732771cda7c84 + sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.3.0" just_audio_web: dependency: transitive description: name: just_audio_web - sha256: "89d8db6f19f3821bb6bf908c4bfb846079afb2ab575b783d781a6bf119e3abaf" + sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448" url: "https://pub.dev" source: hosted - version: "0.4.7" + version: "0.4.13" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + url: "https://pub.dev" + source: hosted + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.1" logging: dependency: "direct main" description: name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.3.0" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.15.0" mime: dependency: "direct main" description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.6" nm: dependency: transitive description: @@ -746,10 +746,10 @@ packages: dependency: transitive description: name: octo_image - sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "2.1.0" package_config: dependency: transitive description: @@ -762,122 +762,114 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: de41e74b0ea9a3e524c68f35099af1fdeb4885625aeb277d2e01a42d6bd7b293 + sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "8.1.1" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" palette_generator: dependency: "direct main" description: name: palette_generator - sha256: "0e3cd6974e10b1434dcf4cf779efddb80e2696585e273a2dbede6af52f94568d" + sha256: "0b20245c451f14a5ca0818ab7a377765162389f8e8f0db361cceabf0fed9d1ea" url: "https://pub.dev" source: hosted - version: "0.3.3+2" + version: "0.3.3+5" path: dependency: "direct main" description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.0" path_parsing: dependency: transitive description: name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" path_provider: dependency: "direct main" description: name: path_provider - sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4 + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" url: "https://pub.dev" source: hosted - version: "2.0.14" + version: "2.1.5" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7" + sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" url: "https://pub.dev" source: hosted - version: "2.0.24" + version: "2.2.15" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "818b2dc38b0f178e0ea3f7cf3b28146faab11375985d815942a68eee11c2d0f7" + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.4.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.10" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.1.6" - pedantic: - dependency: transitive - description: - name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" - url: "https://pub.dev" - source: hosted - version: "1.11.1" + version: "2.3.0" petitparser: dependency: transitive description: name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "6.0.2" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.8" pool: dependency: "direct main" description: @@ -886,30 +878,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" pub_semver: dependency: transitive description: name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: ec85d7d55339d85f44ec2b682a82fea340071e8978257e5a43e69f79e98ef50c + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.3.0" recase: dependency: transitive description: @@ -922,34 +906,34 @@ packages: dependency: transitive description: name: riverpod - sha256: "77ab3bcd084bb19fa8717a526217787c725d7f5be938404c7839cd760fdf6ae5" + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.6.1" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "34270111fa5843517e9ee63b1f906c756d99380f2aecbce52151aadb6d1c05a6" + sha256: "8b71f03fc47ae27d13769496a1746332df4cec43918aeba9aff1e232783a780f" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.5.1" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: afc01d5ba57e7993342c8d5120925826949455607ae29c8d98608ee840ee1cd6 + sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.6.1" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: decd5427a51603fc2add9b01f04874ac0bc6b5b6547343b8a5ccb0ba1a069943 + sha256: d451608bf17a372025fc36058863737636625dfdb7e3cbf6142e0dfeb366ab22 url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.4.0" rxdart: dependency: "direct main" description: @@ -962,50 +946,50 @@ packages: dependency: "direct main" description: name: share_plus - sha256: "322a1ec9d9fe07e2e2252c098ce93d12dbd06133cc4c00ffe6a4ef505c295c17" + sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.2.2" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.4.0" shelf: dependency: transitive description: name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" shelf_static: dependency: transitive description: name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.3" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.0.1" sky_engine: dependency: transitive description: flutter @@ -1015,34 +999,34 @@ packages: dependency: "direct main" description: name: sliver_tools - sha256: ccdc502098a8bfa07b3ec582c282620031481300035584e1bb3aca296a505e8c + sha256: eae28220badfb9d0559207badcbbc9ad5331aac829a88cb0964d330d2a4636a6 url: "https://pub.dev" source: hosted - version: "0.2.10" + version: "0.2.12" source_gen: dependency: transitive description: name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.2.7" + version: "1.5.0" source_helper: dependency: transitive description: name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.4" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" source_maps: dependency: transitive description: @@ -1055,74 +1039,106 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" sqflite: dependency: transitive description: name: sqflite - sha256: "500d6fec583d2c021f2d25a056d96654f910662c64f836cd2063167b8f1fa758" + sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" url: "https://pub.dev" source: hosted - version: "2.2.6" + version: "2.4.1" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + url: "https://pub.dev" + source: hosted + version: "2.4.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "963dad8c4aa2f814ce7d2d5b1da2f36f31bd1a439d8f27e3dc189bb9d26bc684" + sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.5.4+6" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" sqlite3: dependency: transitive description: name: sqlite3 - sha256: a3ba4b66a7ab170ce7aa3f5ac43c19ee8d6637afbe7b7c95c94112b4f4d91566 + sha256: cb7f4e9dc1b52b1fa350f7b3d41c662e75fc3d399555fa4e5efcf267e9a4fbb5 url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "2.5.0" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "02f80aea54a19a36b347dedf6d4181ecd9107f5831ea6139cfd0376a3de197ba" + sha256: "636b0fe8a2de894e5455572f6cbbc458f4ffecfe9f860b79439e27041ea4f0b9" url: "https://pub.dev" source: hosted - version: "0.5.13" + version: "0.5.27" sqlparser: dependency: transitive description: name: sqlparser - sha256: "11ebfd764085a96261f44f90cbf475927c508e654d4be30ee4832d564d06d86b" + sha256: "7b20045d1ccfb7bc1df7e8f9fee5ae58673fce6ff62cefbb0e0fd7214e90e5a0" url: "https://pub.dev" source: hosted - version: "0.28.1" + version: "0.34.1" stack_trace: dependency: "direct main" description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" state_notifier: dependency: transitive description: name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb url: "https://pub.dev" source: hosted - version: "0.7.2+1" + version: "1.0.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -1143,10 +1159,10 @@ packages: dependency: "direct main" description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -1159,26 +1175,26 @@ packages: dependency: "direct dev" description: name: test - sha256: a5fcd2d25eeadbb6589e80198a47d6a464ba3e2049da473943b8af9797900c2d + sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e" url: "https://pub.dev" source: hosted - version: "1.22.0" + version: "1.25.7" test_api: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.7.2" test_core: dependency: transitive description: name: test_core - sha256: "0ef9755ec6d746951ba0aabe62f874b707690b5ede0fecc818b138fcc9b14888" + sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696" url: "https://pub.dev" source: hosted - version: "0.4.20" + version: "0.6.4" text_scroll: dependency: "direct main" description: @@ -1199,106 +1215,106 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "75f2846facd11168d007529d6cd8fcb2b750186bea046af9711f10b907e1587e" + sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" url: "https://pub.dev" source: hosted - version: "6.1.10" + version: "6.3.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "40612cd31902fe46b5158693faa65781b1ca7adfb883d77fa6f0d6dcf0317d85" + sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" url: "https://pub.dev" source: hosted - version: "6.0.30" + version: "6.3.14" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.3.2" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.2.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa" + sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.3.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.3" uuid: dependency: transitive description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "4.5.1" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: "4cf8e60dbe4d3a693d37dff11255a172594c0793da542183cbfe7fe978ae4aaa" + sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752" url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.1.10+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "278ad5f816f58b1967396d1f78ced470e3e58c9fe4b27010102c0a595c764468" + sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33 url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.1.10+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "0bf61ad56e6fd6688a2865d3ceaea396bc6a0a90ea0d7ad5049b1b76c09d6163" + sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a" url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.1.10+1" vector_math: dependency: transitive description: @@ -1311,42 +1327,58 @@ packages: dependency: transitive description: name: vm_service - sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7 + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "9.4.0" + version: "14.2.5" watcher: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "3.0.1" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" win32: dependency: transitive description: name: win32 - sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "5.9.0" worker_manager: dependency: "direct main" description: @@ -1359,26 +1391,26 @@ packages: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" xml: dependency: "direct main" description: name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.5.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.19.2 <3.0.0" - flutter: ">=3.7.0-0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2b56e57..4bebc3f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ publish_to: 'none' version: 2.0.0-alpha.3+12 environment: - sdk: '>=2.19.2 <3.0.0' + sdk: '>=3.0.0 <4.0.0' dependencies: flutter: @@ -55,7 +55,7 @@ dependencies: synchronized: ^3.1.0 flutter_keyboard_visibility: ^5.4.0 connectivity_plus: ^3.0.4 - package_info_plus: ^3.1.1 + package_info_plus: ^8.1.1 url_launcher: ^6.1.10 logging: ^1.1.1 share_plus: ^7.0.0 From 10280a99038a22cd69a9bef73747ebe767b18070 Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Tue, 10 Dec 2024 21:52:54 +0100 Subject: [PATCH 4/4] fix: move all .of(context) out of the widget tree and into a variable At some places .of(context) was used multiple times in the same widget. This, although small, can have an impact on performance that's just plain unnecessary. It's better to just get things you need out of the context first before you do anything else. --- lib/app/buttons.dart | 4 +++- lib/app/context_menus.dart | 3 ++- lib/app/gradient.dart | 3 ++- lib/app/images.dart | 14 ++++++++++---- lib/app/items.dart | 8 ++++++-- lib/app/lists.dart | 4 +++- lib/app/now_playing_bar.dart | 14 +++++++++----- lib/app/pages/artist_page.dart | 3 ++- lib/app/pages/bottom_nav_page.dart | 12 ++++++------ lib/app/pages/browse_page.dart | 4 +++- lib/app/pages/library_page.dart | 10 +++++++--- lib/app/pages/now_playing_page.dart | 4 +++- lib/app/pages/search_page.dart | 4 ++-- 13 files changed, 58 insertions(+), 29 deletions(-) diff --git a/lib/app/buttons.dart b/lib/app/buttons.dart index f40fa96..1564acf 100644 --- a/lib/app/buttons.dart +++ b/lib/app/buttons.dart @@ -32,6 +32,8 @@ class RadioPlayFab extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context); + return FloatingActionButton( heroTag: null, onPressed: onPressed, @@ -44,7 +46,7 @@ class RadioPlayFab extends StatelessWidget { right: -10, child: Icon( Icons.play_arrow_rounded, - color: Theme.of(context).colorScheme.primaryContainer, + color: theme.colorScheme.primaryContainer, size: 26, ), ), diff --git a/lib/app/context_menus.dart b/lib/app/context_menus.dart index c562bc8..21db48f 100644 --- a/lib/app/context_menus.dart +++ b/lib/app/context_menus.dart @@ -327,8 +327,9 @@ class _DownloadAction extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final l = AppLocalizations.of(context); return _MenuItem( - title: _actionText(AppLocalizations.of(context)), + title: _actionText(l), icon: downloadAction.iconBuilder(context), onTap: downloadAction.action, ); diff --git a/lib/app/gradient.dart b/lib/app/gradient.dart index b589fa8..e68656e 100644 --- a/lib/app/gradient.dart +++ b/lib/app/gradient.dart @@ -54,11 +54,12 @@ class BackgroundGradient extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final mediaQuery = MediaQuery.of(context); final base = ref.watch(baseThemeProvider); return SizedBox( width: double.infinity, - height: MediaQuery.of(context).size.height, + height: mediaQuery.size.height, child: Container( decoration: BoxDecoration( gradient: LinearGradient( diff --git a/lib/app/images.dart b/lib/app/images.dart index 6867576..9e693e2 100644 --- a/lib/app/images.dart +++ b/lib/app/images.dart @@ -103,6 +103,8 @@ class ArtistArtImage extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final cache = ref.watch(_artistArtUriCacheInfoProvider( artistId: artistId, thumbnail: thumbnail, @@ -123,7 +125,7 @@ class ArtistArtImage extends HookConsumerWidget { width: width, ), loading: () => Container( - color: Theme.of(context).colorScheme.secondaryContainer, + color: theme.colorScheme.secondaryContainer, height: height, width: width, ), @@ -211,9 +213,11 @@ class CardClip extends StatelessWidget { @override Widget build(BuildContext context) { final cardShape = Theme.of(context).cardTheme.shape; + return ClipRRect( - borderRadius: - cardShape is RoundedRectangleBorder ? cardShape.borderRadius : BorderRadius.zero, + borderRadius: cardShape is RoundedRectangleBorder + ? cardShape.borderRadius + : BorderRadius.zero, child: !square ? child : AspectRatio( @@ -247,6 +251,8 @@ class UriCacheInfoImage extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context); + return CachedNetworkImage( imageUrl: cache.uri.toString(), cacheKey: cache.cacheKey, @@ -260,7 +266,7 @@ class UriCacheInfoImage extends StatelessWidget { placeholderStyle == PlaceholderStyle.spinner ? Container() : Container( - color: Theme.of(context).colorScheme.secondaryContainer, + color: theme.colorScheme.secondaryContainer, ), errorWidget: (context, url, error) => PlaceholderImage( fit: fit, diff --git a/lib/app/items.dart b/lib/app/items.dart index 82d2373..9d55b0d 100644 --- a/lib/app/items.dart +++ b/lib/app/items.dart @@ -204,12 +204,14 @@ class ArtistListTile extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final l = AppLocalizations.of(context); + return ListTile( leading: CircleClip( child: ArtistArtImage(artistId: artist.id), ), title: Text(artist.name), - subtitle: Text(AppLocalizations.of(context).resourcesAlbumCount( + subtitle: Text(l.resourcesAlbumCount( artist.albumCount, )), onTap: onTap, @@ -239,6 +241,8 @@ class PlaylistListTile extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final l = AppLocalizations.of(context); + // generate the palette used in other views ahead of time ref.watch(playlistArtPaletteProvider(playlist.id)); final cache = ref.watch(cacheServiceProvider).playlistArt(playlist); @@ -248,7 +252,7 @@ class PlaylistListTile extends HookConsumerWidget { child: UriCacheInfoImage(cache: cache), ), title: Text(playlist.name), - subtitle: Text(AppLocalizations.of(context).resourcesSongCount( + subtitle: Text(l.resourcesSongCount( playlist.songCount, )), onTap: onTap, diff --git a/lib/app/lists.dart b/lib/app/lists.dart index ccb3f23..db6a15e 100644 --- a/lib/app/lists.dart +++ b/lib/app/lists.dart @@ -72,6 +72,8 @@ class PagedGridQueryView extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final mediaQuery = MediaQuery.of(context); + SliverGridDelegate gridDelegate; double spacing; @@ -92,7 +94,7 @@ class PagedGridQueryView extends HookConsumerWidget { } final listView = PagedGridView( - padding: MediaQuery.of(context).padding + EdgeInsets.all(spacing), + padding: mediaQuery.padding + EdgeInsets.all(spacing), pagingController: pagingController, builderDelegate: PagedChildBuilderDelegate( itemBuilder: (context, item, index) => diff --git a/lib/app/now_playing_bar.dart b/lib/app/now_playing_bar.dart index a718847..28d26eb 100644 --- a/lib/app/now_playing_bar.dart +++ b/lib/app/now_playing_bar.dart @@ -112,6 +112,8 @@ class _TrackInfo extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final item = ref.watch(mediaItemProvider); return Column( @@ -125,11 +127,11 @@ class _TrackInfo extends HookConsumerWidget { // maxLines: 1, // softWrap: false, // overflow: TextOverflow.fade, - // style: Theme.of(context).textTheme.labelLarge, + // style: theme.textTheme.labelLarge, // ), ScrollableText( data?.title ?? 'Nothing!!!', - style: Theme.of(context).textTheme.labelLarge, + style: theme.textTheme.labelLarge, ), const SizedBox(height: 2), Text( @@ -137,7 +139,7 @@ class _TrackInfo extends HookConsumerWidget { maxLines: 1, softWrap: false, overflow: TextOverflow.fade, - style: Theme.of(context).textTheme.labelMedium, + style: theme.textTheme.labelMedium, ), ], error: (_, __) => const [Text('Error!')], @@ -158,6 +160,8 @@ class PlayPauseButton extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final playing = ref.watch(playingProvider); final state = ref.watch(processingStateProvider); @@ -173,7 +177,7 @@ class PlayPauseButton extends HookConsumerWidget { width: size / 3, child: CircularProgressIndicator( strokeWidth: size / 16, - color: Theme.of(context).colorScheme.surface, + color: theme.colorScheme.surface, ), ), ], @@ -195,7 +199,7 @@ class PlayPauseButton extends HookConsumerWidget { } }, icon: icon, - color: Theme.of(context).colorScheme.surface, + color: theme.colorScheme.surface, ); } } diff --git a/lib/app/pages/artist_page.dart b/lib/app/pages/artist_page.dart index eafba27..1ee59cf 100644 --- a/lib/app/pages/artist_page.dart +++ b/lib/app/pages/artist_page.dart @@ -118,10 +118,11 @@ class _Title extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context); return Text( text, textAlign: TextAlign.center, - style: Theme.of(context).textTheme.displayMedium!.copyWith( + style: theme.textTheme.displayMedium!.copyWith( fontWeight: FontWeight.bold, color: Colors.white, shadows: [ diff --git a/lib/app/pages/bottom_nav_page.dart b/lib/app/pages/bottom_nav_page.dart index e5dbcdc..823b60e 100644 --- a/lib/app/pages/bottom_nav_page.dart +++ b/lib/app/pages/bottom_nav_page.dart @@ -46,6 +46,8 @@ class BottomNavTabsPage extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final observer = ref.watch(bottomTabObserverProvider); const navElevation = 3.0; @@ -63,8 +65,8 @@ class BottomNavTabsPage extends HookConsumerWidget { return AnnotatedRegion( value: SystemUiOverlayStyle.light.copyWith( systemNavigationBarColor: ElevationOverlay.applySurfaceTint( - Theme.of(context).colorScheme.surface, - Theme.of(context).colorScheme.surfaceTint, + theme.colorScheme.surface, + theme.colorScheme.surfaceTint, navElevation, ), statusBarColor: Colors.transparent, @@ -136,7 +138,6 @@ class OfflineIndicator extends HookConsumerWidget { padding: EdgeInsets.only(left: 2, bottom: 2), child: Icon( Icons.cloud_off_rounded, - // color: Theme.of(context).colorScheme.secondary, size: 20, ), ), @@ -154,6 +155,7 @@ class _BottomNavBar extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final iconTheme = IconTheme.of(context); final tabsRouter = AutoTabsRouter.of(context); useListenableSelector(tabsRouter, () => tabsRouter.activeIndex); @@ -190,9 +192,7 @@ class _BottomNavBar extends HookConsumerWidget { return SvgPicture.asset( 'assets/tag_FILL0_wght400_GRAD0_opsz24.svg', colorFilter: ColorFilter.mode( - IconTheme.of(context).color!.withOpacity( - IconTheme.of(context).opacity ?? 1, - ), + iconTheme.color!.withOpacity(iconTheme.opacity ?? 1), BlendMode.srcIn, ), height: 28, diff --git a/lib/app/pages/browse_page.dart b/lib/app/pages/browse_page.dart index 0ead47b..3509611 100644 --- a/lib/app/pages/browse_page.dart +++ b/lib/app/pages/browse_page.dart @@ -249,6 +249,8 @@ class _Category extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + return MultiSliver( children: [ SliverToBoxAdapter( @@ -256,7 +258,7 @@ class _Category extends HookConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), child: Text( title, - style: Theme.of(context).textTheme.headlineMedium, + style: theme.textTheme.headlineMedium, ), ), ), diff --git a/lib/app/pages/library_page.dart b/lib/app/pages/library_page.dart index 37c5eb6..7f0eed0 100644 --- a/lib/app/pages/library_page.dart +++ b/lib/app/pages/library_page.dart @@ -228,6 +228,8 @@ class _LibraryFilterFab extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final tabsRouter = AutoTabsRouter.of(context); final activeIndex = useListenableSelector(tabsRouter, () => tabsRouter.activeIndex); @@ -242,7 +244,7 @@ class _LibraryFilterFab extends HookConsumerWidget { end: 0, child: Icon( Icons.circle, - color: Theme.of(context).colorScheme.primaryContainer, + color: theme.colorScheme.primaryContainer, size: 11, ), ), @@ -449,6 +451,8 @@ class ListSortFilterOptions extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final list = ref.watch(libraryListQueryProvider(index)); return SliverList( @@ -457,7 +461,7 @@ class ListSortFilterOptions extends HookConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16), child: Text( 'Sort by', - style: Theme.of(context).textTheme.titleLarge, + style: theme.textTheme.titleLarge, ), ), const SizedBox(height: 8), @@ -480,7 +484,7 @@ class ListSortFilterOptions extends HookConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Text( 'Filter', - style: Theme.of(context).textTheme.titleLarge, + style: theme.textTheme.titleLarge, ), ), for (var column in list.options.filterColumns) diff --git a/lib/app/pages/now_playing_page.dart b/lib/app/pages/now_playing_page.dart index 426955b..867eda9 100644 --- a/lib/app/pages/now_playing_page.dart +++ b/lib/app/pages/now_playing_page.dart @@ -215,6 +215,8 @@ class _Progress extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final colors = ref.watch(mediaItemThemeProvider).valueOrNull; final position = ref.watch(positionProvider); final duration = ref.watch(durationProvider); @@ -246,7 +248,7 @@ class _Progress extends HookConsumerWidget { Padding( padding: const EdgeInsets.symmetric(horizontal: 24), child: DefaultTextStyle( - style: Theme.of(context).textTheme.titleMedium!, + style: theme.textTheme.titleMedium!, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/lib/app/pages/search_page.dart b/lib/app/pages/search_page.dart index 8759443..36fb6cd 100644 --- a/lib/app/pages/search_page.dart +++ b/lib/app/pages/search_page.dart @@ -131,11 +131,11 @@ class _SectionHeader extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final theme = Theme.of(context).textTheme; + final theme = Theme.of(context); return Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - child: Text(title, style: theme.headlineMedium), + child: Text(title, style: theme.textTheme.headlineMedium), ); } }