From 837a22bd484e11f44667cf7cd003d2cfffad32fc Mon Sep 17 00:00:00 2001 From: Frederik Feichtmeier Date: Thu, 19 Dec 2024 20:06:43 +0100 Subject: [PATCH] feat: improve radio search and update yaru (#1101) --- lib/app/view/desktop_musicpod_app.dart | 15 +- lib/app/view/main_page_icon.dart | 6 +- lib/app_config.dart | 2 + lib/common/data/audio_type.dart | 14 +- lib/common/view/audio_fall_back_icon.dart | 57 ++++++++ lib/common/view/audio_tile.dart | 1 + lib/common/view/audio_tile_image.dart | 27 ++-- lib/common/view/progress.dart | 1 - lib/main.dart | 2 +- lib/player/view/player_fall_back_image.dart | 27 +--- lib/radio/radio_service.dart | 45 ++++-- lib/radio/view/radio_fall_back_icon.dart | 59 -------- lib/radio/view/station_card.dart | 12 +- lib/radio/view/station_page.dart | 7 +- macos/Podfile.lock | 2 +- needs_translation.json | 26 ---- pubspec.lock | 153 ++++++++++---------- pubspec.yaml | 5 +- 18 files changed, 231 insertions(+), 230 deletions(-) create mode 100644 lib/common/view/audio_fall_back_icon.dart delete mode 100644 lib/radio/view/radio_fall_back_icon.dart diff --git a/lib/app/view/desktop_musicpod_app.dart b/lib/app/view/desktop_musicpod_app.dart index 3e0ff64b2..dc24dce6d 100644 --- a/lib/app/view/desktop_musicpod_app.dart +++ b/lib/app/view/desktop_musicpod_app.dart @@ -3,7 +3,9 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:phoenix_theme/phoenix_theme.dart'; import 'package:watch_it/watch_it.dart'; +import 'package:yaru/yaru.dart'; +import '../../app_config.dart'; import '../../constants.dart'; import '../../external_path/external_path_service.dart'; import '../../l10n/l10n.dart'; @@ -56,15 +58,22 @@ class _DesktopMusicPodAppState extends State { @override Widget build(BuildContext context) { final themeIndex = watchPropertyValue((SettingsModel m) => m.themeIndex); - final phoenix = phoenixTheme(color: widget.accent ?? Colors.greenAccent); + final color = widget.accent ?? const Color(0xFFed3c63); + final phoenix = phoenixTheme(color: color); return MaterialApp( debugShowCheckedModeBanner: false, themeMode: ThemeMode.values[themeIndex], highContrastTheme: widget.highContrastTheme, highContrastDarkTheme: widget.highContrastDarkTheme, - theme: widget.lightTheme ?? phoenix.lightTheme, - darkTheme: widget.darkTheme ?? phoenix.darkTheme, + theme: widget.lightTheme ?? + (yaruStyled + ? createYaruLightTheme(primaryColor: color) + : phoenix.lightTheme), + darkTheme: widget.darkTheme ?? + (yaruStyled + ? createYaruDarkTheme(primaryColor: color) + : phoenix.darkTheme), localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: supportedLocales, onGenerateTitle: (context) => kAppTitle, diff --git a/lib/app/view/main_page_icon.dart b/lib/app/view/main_page_icon.dart index d113e6eee..0b157701f 100644 --- a/lib/app/view/main_page_icon.dart +++ b/lib/app/view/main_page_icon.dart @@ -46,7 +46,11 @@ class MainPageIcon extends StatelessWidget with WatchItMixin { return Padding( padding: mainPageIconPadding, - child: Icon(selected ? audioType.selectedIconData : audioType.iconData), + child: Icon( + selected + ? audioType.selectedIconDataMainPage + : audioType.iconDataMainPage, + ), ); } } diff --git a/lib/app_config.dart b/lib/app_config.dart index 5fe6a7631..cd475bee3 100644 --- a/lib/app_config.dart +++ b/lib/app_config.dart @@ -9,6 +9,8 @@ bool allowDiscordRPC = (kDebugMode && !Platform.isAndroid) || Platform.isWindows || bool.tryParse(const String.fromEnvironment('ALLOW_DISCORD_RPC')) == true; +bool get useSystemTheme => !Platform.isLinux; + bool get yaruStyled => Platform.isLinux; bool get appleStyled => Platform.isMacOS || Platform.isIOS; diff --git a/lib/common/data/audio_type.dart b/lib/common/data/audio_type.dart index 6b478704d..908978f56 100644 --- a/lib/common/data/audio_type.dart +++ b/lib/common/data/audio_type.dart @@ -15,12 +15,24 @@ enum AudioType { }; IconData get iconData => switch (this) { - local => Iconz.localAudio, + local => Iconz.musicNote, radio => Iconz.radio, podcast => Iconz.podcast, }; IconData get selectedIconData => switch (this) { + local => Iconz.musicNote, + radio => Iconz.radioFilled, + podcast => Iconz.podcastFilled, + }; + + IconData get iconDataMainPage => switch (this) { + local => Iconz.localAudio, + radio => Iconz.radio, + podcast => Iconz.podcast, + }; + + IconData get selectedIconDataMainPage => switch (this) { local => Iconz.localAudioFilled, radio => Iconz.radioFilled, podcast => Iconz.podcastFilled, diff --git a/lib/common/view/audio_fall_back_icon.dart b/lib/common/view/audio_fall_back_icon.dart new file mode 100644 index 000000000..c75835cee --- /dev/null +++ b/lib/common/view/audio_fall_back_icon.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:yaru/yaru.dart'; + +import '../data/audio.dart'; +import 'icons.dart'; +import 'theme.dart'; +import '../../extensions/build_context_x.dart'; +import '../../extensions/theme_data_x.dart'; + +class AudioFallBackIcon extends StatelessWidget { + const AudioFallBackIcon({ + super.key, + required this.audio, + this.iconSize, + this.dimension, + this.color, + }); + + final double? iconSize; + final Audio? audio; + final double? dimension; + final Color? color; + + @override + Widget build(BuildContext context) { + final theme = context.theme; + final light = theme.isLight; + final fallBackColor = theme.primaryColor; + final gradientColor = color ?? + getAlphabetColor( + audio?.title ?? audio?.album ?? '', + fallBackColor, + ); + return Container( + height: dimension ?? double.infinity, + width: dimension ?? double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomLeft, + end: Alignment.topRight, + colors: [ + gradientColor.scale(lightness: light ? 0 : -0.4, saturation: -0.5), + gradientColor.scale( + lightness: light ? -0.1 : -0.2, + saturation: -0.5, + ), + ], + ), + ), + child: Icon( + audio?.audioType?.iconData ?? Iconz.musicNote, + size: iconSize, + color: contrastColor(gradientColor).withOpacity(0.7), + ), + ); + } +} diff --git a/lib/common/view/audio_tile.dart b/lib/common/view/audio_tile.dart index 0bbbb4ce7..9a8c53880 100644 --- a/lib/common/view/audio_tile.dart +++ b/lib/common/view/audio_tile.dart @@ -109,6 +109,7 @@ class _AudioTileState extends State { }, title: Padding( padding: const EdgeInsets.only(right: kLargestSpace), + // TODO: make playlists audiotype agnostic and stop forwarding callbacks once and for all child: widget.onTitleTap == null ? Text( widget.audio.title ?? l10n.unknown, diff --git a/lib/common/view/audio_tile_image.dart b/lib/common/view/audio_tile_image.dart index 1cde5610c..e22b0b8ec 100644 --- a/lib/common/view/audio_tile_image.dart +++ b/lib/common/view/audio_tile_image.dart @@ -1,31 +1,26 @@ import 'package:flutter/material.dart'; -import 'ui_constants.dart'; import '../../local_audio/view/local_cover.dart'; import '../data/audio.dart'; -import '../data/audio_type.dart'; -import 'icons.dart'; +import 'audio_fall_back_icon.dart'; import 'safe_network_image.dart'; +import 'ui_constants.dart'; class AudioTileImage extends StatelessWidget { const AudioTileImage({ super.key, this.audio, required this.size, + this.fallback, }); final Audio? audio; final double size; + final Widget? fallback; @override Widget build(BuildContext context) { - final icon = Icon( - switch (audio?.audioType) { - AudioType.radio => Iconz.radio, - AudioType.podcast => Iconz.podcast, - _ => Iconz.musicNote, - }, - size: size / (1.65), - ); + final fallbackIcon = + AudioFallBackIcon(audio: audio, iconSize: size / (1.65)); Widget image; if (audio?.hasPathAndId == true) { image = LocalCover( @@ -33,18 +28,16 @@ class AudioTileImage extends StatelessWidget { path: audio!.path!, fit: BoxFit.cover, dimension: size, - fallback: icon, + fallback: fallbackIcon, ); - } else if (audio?.imageUrl != null || audio?.albumArtUrl != null) { + } else { image = SafeNetworkImage( url: audio?.imageUrl ?? audio?.albumArtUrl, height: size, fit: BoxFit.cover, - fallBackIcon: icon, - errorIcon: icon, + fallBackIcon: fallbackIcon, + errorIcon: fallbackIcon, ); - } else { - image = icon; } return SizedBox.square( diff --git a/lib/common/view/progress.dart b/lib/common/view/progress.dart index ca857dc62..efa08d23b 100644 --- a/lib/common/view/progress.dart +++ b/lib/common/view/progress.dart @@ -85,7 +85,6 @@ class LinearProgress extends StatelessWidget { return yaruStyled ? YaruLinearProgressIndicator( value: value, - minHeight: trackHeight, strokeWidth: trackHeight, color: color, ) diff --git a/lib/main.dart b/lib/main.dart index bb53b278e..bfede3abb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -19,7 +19,7 @@ Future main(List args) async { ..setMinimumSize(const Size(500, 700)) ..setSize(const Size(950, 820)); } - if (!yaruStyled) { + if (useSystemTheme) { SystemTheme.fallbackColor = const Color(0xFFed3c63); await SystemTheme.accentColor.load(); } diff --git a/lib/player/view/player_fall_back_image.dart b/lib/player/view/player_fall_back_image.dart index ebca8b3d7..09a545d00 100644 --- a/lib/player/view/player_fall_back_image.dart +++ b/lib/player/view/player_fall_back_image.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:yaru/yaru.dart'; import '../../common/data/audio.dart'; -import '../../common/data/audio_type.dart'; import '../../common/view/icons.dart'; -import '../../common/view/theme.dart'; import '../../extensions/build_context_x.dart'; import '../../extensions/theme_data_x.dart'; @@ -26,14 +24,7 @@ class PlayerFallBackImage extends StatelessWidget { Widget build(BuildContext context) { final iconSize = width * 0.7; final theme = context.theme; - IconData iconData; - if (audio?.audioType == AudioType.radio) { - iconData = Iconz.radio; - } else if (audio?.audioType == AudioType.podcast) { - iconData = Iconz.podcast; - } else { - iconData = Iconz.musicNote; - } + final color = theme.primaryColor; return Center( child: Container( decoration: BoxDecoration( @@ -41,15 +32,11 @@ class PlayerFallBackImage extends StatelessWidget { begin: Alignment.bottomLeft, end: Alignment.topRight, colors: [ - getAlphabetColor( - audio?.title ?? audio?.album ?? 'a', - ).scale( + color.scale( lightness: theme.isLight ? 0 : -0.4, saturation: -0.5, ), - getAlphabetColor( - audio?.title ?? audio?.album ?? 'a', - ).scale( + color.scale( lightness: theme.isLight ? -0.1 : -0.2, saturation: -0.5, ), @@ -61,13 +48,9 @@ class PlayerFallBackImage extends StatelessWidget { child: noIcon ? null : Icon( - iconData, + audio?.audioType?.iconData ?? Iconz.musicNote, size: iconSize, - color: contrastColor( - getAlphabetColor( - audio?.title ?? audio?.album ?? 'a', - ), - ), + color: contrastColor(color), ), ), ); diff --git a/lib/radio/radio_service.dart b/lib/radio/radio_service.dart index 84416d03c..3ff8e9d2b 100644 --- a/lib/radio/radio_service.dart +++ b/lib/radio/radio_service.dart @@ -56,6 +56,14 @@ class RadioService { return hosts; } + RadioBrowserListResponse? _response; + String? _uuid; + String? _country; + String? _name; + String? _state; + String? _tag; + String? _language; + int? _limit; Future?> search({ String? uuid, String? country, @@ -72,36 +80,55 @@ class RadioService { } } - RadioBrowserListResponse? response; + if (_response?.items != null && + _uuid == uuid && + _country == country && + _name == name && + _state == state && + _tag == tag && + _language == language && + _limit == limit) { + return _response?.items; + } + final parameters = InputParameters( hidebroken: true, order: 'stationcount', - limit: limit, + limit: limit > 300 ? 300 : limit, ); try { if (uuid != null) { - response = await _radioBrowserApi!.getStationsByUUID(uuids: [uuid]); + _response = await _radioBrowserApi!.getStationsByUUID(uuids: [uuid]); } if (name?.isEmpty == false) { - response = await _radioBrowserApi! + _response = await _radioBrowserApi! .getStationsByName(name: name!, parameters: parameters); } else if (country?.isEmpty == false) { - response = await _radioBrowserApi! + _response = await _radioBrowserApi! .getStationsByCountry(country: country!, parameters: parameters); } else if (tag?.isEmpty == false) { - response = await _radioBrowserApi! + _response = await _radioBrowserApi! .getStationsByTag(tag: tag!, parameters: parameters); } else if (state?.isEmpty == false) { - response = await _radioBrowserApi! + _response = await _radioBrowserApi! .getStationsByState(state: state!, parameters: parameters); } else if (language?.isEmpty == false) { - response = await _radioBrowserApi! + _response = await _radioBrowserApi! .getStationsByLanguage(language: language!, parameters: parameters); } } on Exception catch (e) { printMessageInDebugMode(e); } - return response?.items ?? []; + + _uuid = uuid; + _country = country; + _name = name; + _state = state; + _tag = tag; + _language = language; + _limit = limit; + + return _response?.items ?? []; } List? _tags; diff --git a/lib/radio/view/radio_fall_back_icon.dart b/lib/radio/view/radio_fall_back_icon.dart deleted file mode 100644 index 2506d0709..000000000 --- a/lib/radio/view/radio_fall_back_icon.dart +++ /dev/null @@ -1,59 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:yaru/yaru.dart'; - -import '../../common/data/audio.dart'; -import '../../common/view/icons.dart'; -import '../../common/view/theme.dart'; -import '../../extensions/build_context_x.dart'; -import '../../extensions/theme_data_x.dart'; - -class RadioFallBackIcon extends StatelessWidget { - const RadioFallBackIcon({ - super.key, - this.iconSize, - required this.station, - }); - - final double? iconSize; - final Audio? station; - - @override - Widget build(BuildContext context) { - final theme = context.theme; - final light = theme.isLight; - final fallBackColor = theme.cardColor; - return Container( - height: double.infinity, - width: double.infinity, - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.bottomLeft, - end: Alignment.topRight, - colors: [ - getAlphabetColor( - station?.title ?? station?.album ?? '', - fallBackColor, - ).scale(lightness: light ? 0 : -0.4, saturation: -0.5), - getAlphabetColor( - station?.title ?? station?.album ?? '', - fallBackColor, - ).scale(lightness: light ? -0.1 : -0.2, saturation: -0.5), - ], - ), - ), - child: Padding( - padding: const EdgeInsets.only(bottom: 10), - child: Icon( - Iconz.radio, - size: iconSize ?? 70, - color: contrastColor( - getAlphabetColor( - station?.title ?? station?.album ?? '', - fallBackColor, - ), - ).withOpacity(0.7), - ), - ), - ); - } -} diff --git a/lib/radio/view/station_card.dart b/lib/radio/view/station_card.dart index 2eaabe193..4a3d965a2 100644 --- a/lib/radio/view/station_card.dart +++ b/lib/radio/view/station_card.dart @@ -7,7 +7,7 @@ import '../../common/view/audio_card_bottom.dart'; import '../../common/view/safe_network_image.dart'; import '../../common/view/theme.dart'; import '../../library/library_model.dart'; -import 'radio_fall_back_icon.dart'; +import '../../common/view/audio_fall_back_icon.dart'; import 'station_page.dart'; class StationCard extends StatelessWidget { @@ -42,10 +42,14 @@ class StationCard extends StatelessWidget { ), image: SizedBox.expand( child: SafeNetworkImage( - fallBackIcon: RadioFallBackIcon( - station: station, + fallBackIcon: AudioFallBackIcon( + audio: station, + iconSize: 70, + ), + errorIcon: AudioFallBackIcon( + audio: station, + iconSize: 70, ), - errorIcon: RadioFallBackIcon(station: station), url: station?.imageUrl, fit: BoxFit.scaleDown, height: audioCardDimension, diff --git a/lib/radio/view/station_page.dart b/lib/radio/view/station_page.dart index 71dc74962..f56d990da 100644 --- a/lib/radio/view/station_page.dart +++ b/lib/radio/view/station_page.dart @@ -2,10 +2,10 @@ import 'package:flutter/material.dart'; import 'package:watch_it/watch_it.dart'; import '../../app/connectivity_model.dart'; - import '../../common/data/audio.dart'; import '../../common/data/audio_type.dart'; import '../../common/view/adaptive_container.dart'; +import '../../common/view/audio_fall_back_icon.dart'; import '../../common/view/audio_page_header.dart'; import '../../common/view/avatar_play_button.dart'; import '../../common/view/header_bar.dart'; @@ -20,7 +20,6 @@ import '../../l10n/l10n.dart'; import '../../library/library_model.dart'; import '../../search/search_model.dart'; import '../../search/search_type.dart'; -import 'radio_fall_back_icon.dart'; import 'radio_history_list.dart'; import 'radio_page_copy_histoy_button.dart'; import 'radio_page_star_button.dart'; @@ -85,9 +84,9 @@ class StationPage extends StatelessWidget with WatchItMixin { ), ), image: SafeNetworkImage( - fallBackIcon: RadioFallBackIcon( + fallBackIcon: AudioFallBackIcon( iconSize: kMaxAudioPageHeaderHeight / 2, - station: station, + audio: station, ), url: station.imageUrl, fit: BoxFit.cover, diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 73ef9e91f..576362559 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -110,7 +110,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: audio_service: b88ff778e0e3915efd4cd1a5ad6f0beef0c950a9 audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 - connectivity_plus: 4c41c08fc6d7c91f63bc7aec70ffe3730b04f563 + connectivity_plus: 18382e7311ba19efcaee94442b23b32507b20695 device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 file_selector_macos: cc3858c981fe6889f364731200d6232dac1d812d flutter_discord_rpc: 67a7c10ea24d9d3bf35d01af643f48fbcfa7c24f diff --git a/needs_translation.json b/needs_translation.json index e7f03ddcc..37d3a6623 100644 --- a/needs_translation.json +++ b/needs_translation.json @@ -617,17 +617,6 @@ "listenBrainzApiKeyEmpty" ], - "es": [ - "home", - "showArtistPage", - "showAlbumPage" - ], - - "eu": [ - "showArtistPage", - "showAlbumPage" - ], - "fr": [ "home", "local", @@ -661,11 +650,6 @@ "regionNone" ], - "it": [ - "showArtistPage", - "showAlbumPage" - ], - "nl": [ "home", "showArtistPage", @@ -2605,16 +2589,6 @@ "regionZimbabwe" ], - "sk": [ - "showArtistPage", - "showAlbumPage" - ], - - "sv": [ - "showArtistPage", - "showAlbumPage" - ], - "tr": [ "home", "local", diff --git a/pubspec.lock b/pubspec.lock index 77784c732..c720c6fbb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -90,10 +90,10 @@ packages: dependency: "direct main" description: name: audio_service - sha256: "9dd5ba7e77567b290c35908b1950d61485b4dfdd3a0ac398e98cfeec04651b75" + sha256: f6c8191bef6b843da34675dd0731ad11d06094c36b691ffcf3148a4feb2e585f url: "https://pub.dev" source: hosted - version: "0.18.15" + version: "0.18.16" audio_service_mpris: dependency: "direct main" description: @@ -107,10 +107,10 @@ packages: dependency: transitive description: name: audio_service_platform_interface - sha256: "8431a455dac9916cc9ee6f7da5620a666436345c906ad2ebb7fa41d18b3c1bf4" + sha256: "6283782851f6c8b501b60904a32fc7199dc631172da0629d7301e66f672ab777" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.3" audio_service_web: dependency: transitive description: @@ -123,10 +123,10 @@ packages: dependency: transitive description: name: audio_session - sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261" + sha256: b2a26ba8b7efa1790d6460e82971fde3e398cfbe2295df9dea22f3499d2c12a7 url: "https://pub.dev" source: hosted - version: "0.1.21" + version: "0.1.23" basic_utils: dependency: "direct main" description: @@ -219,10 +219,10 @@ packages: dependency: transitive description: name: built_value - sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" url: "https://pub.dev" source: hosted - version: "8.9.2" + version: "8.9.3" cached_network_image: dependency: "direct main" description: @@ -307,10 +307,10 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: "876849631b0c7dc20f8b471a2a03142841b482438e3b707955464f5ffca3e4c3" + sha256: e0817759ec6d2d8e57eb234e6e57d2173931367a865850c7acea40d4b4f9c27d url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.1.1" connectivity_plus_platform_interface: dependency: transitive description: @@ -395,10 +395,10 @@ packages: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" dio: dependency: "direct main" description: @@ -451,10 +451,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "16dc141db5a2ccc6520ebb6a2eb5945b1b09e95085c021d9f914f8ded7f1465c" + sha256: c2376a6aae82358a9f9ccdd7d1f4006d08faa39a2767cce01031d9f593a8bd3b url: "https://pub.dev" source: hosted - version: "8.1.4" + version: "8.1.6" file_selector: dependency: "direct main" description: @@ -467,10 +467,10 @@ packages: dependency: transitive description: name: file_selector_android - sha256: "934850f9702b0f9031bc331a306e7bebc62f894a6e5ca6c0681c7af17e7afb50" + sha256: "98ac58e878b05ea2fdb204e7f4fc4978d90406c9881874f901428e01d3b18fbc" url: "https://pub.dev" source: hosted - version: "0.5.1+11" + version: "0.5.1+12" file_selector_ios: dependency: transitive description: @@ -483,10 +483,10 @@ packages: dependency: "direct main" description: name: file_selector_linux - sha256: b2b91daf8a68ecfa4a01b778a6f52edef9b14ecd506e771488ea0f2e0784198b + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" url: "https://pub.dev" source: hosted - version: "0.9.3+1" + version: "0.9.3+2" file_selector_macos: dependency: transitive description: @@ -560,10 +560,10 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77" + sha256: "31cd0885738e87c72d6f055564d37fabcdacee743b396b78c7636c169cac64f5" url: "https://pub.dev" source: hosted - version: "0.14.1" + version: "0.14.2" flutter_lints: dependency: "direct dev" description: @@ -581,18 +581,18 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "999a4e3cb3e1532a971c86d6c73a480264f6a687959d4887cb4e2990821827e4" + sha256: "255b00afa1a7bad19727da6a7780cf3db6c3c12e68d302d85e0ff1fdf173db9e" url: "https://pub.dev" source: hosted - version: "0.7.4+2" + version: "0.7.4+3" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9b78450b89f059e96c9ebb355fa6b3df1d6b330436e0b885fb49594c41721398" + sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" url: "https://pub.dev" source: hosted - version: "2.0.23" + version: "2.0.24" flutter_rust_bridge: dependency: transitive description: @@ -647,10 +647,10 @@ packages: dependency: transitive description: name: get_it - sha256: c49895c1ecb0ee2a0ec568d39de882e2c299ba26355aa6744ab1001f98cebd15 + sha256: f126a3e286b7f5b578bf436d5592968706c4c1de28a228b870ce375d9f743103 url: "https://pub.dev" source: hosted - version: "8.0.2" + version: "8.0.3" github: dependency: "direct main" description: @@ -719,10 +719,10 @@ packages: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" http_parser: dependency: transitive description: @@ -751,10 +751,10 @@ packages: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" irondash_engine_context: dependency: transitive description: @@ -855,10 +855,10 @@ packages: dependency: transitive description: name: lottie - sha256: "7afc60865a2429d994144f7d66ced2ae4305fe35d82890b8766e3359872d872c" + sha256: fa39707f36786707b01eca7626d2c16c32aa603b3f3a146518518458847dc127 url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.2.0" m3u_parser_nullsafe: dependency: "direct main" description: @@ -912,7 +912,7 @@ packages: description: path: media_kit ref: HEAD - resolved-ref: "143143ac17bb0d9664a9df8dc3e4101748e952b4" + resolved-ref: "652c49e02701bb6bb80953a6fdf650a5c8f002f9" url: "https://github.com/media-kit/media-kit" source: git version: "1.1.11" @@ -953,7 +953,7 @@ packages: description: path: "libs/universal/media_kit_libs_video" ref: HEAD - resolved-ref: "143143ac17bb0d9664a9df8dc3e4101748e952b4" + resolved-ref: "652c49e02701bb6bb80953a6fdf650a5c8f002f9" url: "https://github.com/media-kit/media-kit" source: git version: "1.0.5" @@ -970,7 +970,7 @@ packages: description: path: media_kit_video ref: HEAD - resolved-ref: "143143ac17bb0d9664a9df8dc3e4101748e952b4" + resolved-ref: "652c49e02701bb6bb80953a6fdf650a5c8f002f9" url: "https://github.com/media-kit/media-kit" source: git version: "1.2.5" @@ -1018,26 +1018,26 @@ packages: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce + sha256: "70c421fe9d9cc1a9a7f3b05ae56befd469fe4f8daa3b484823141a55442d858d" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.1.2" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 + sha256: a5ef9986efc7bf772f2696183a3992615baa76c1ffb1189318dd8803778fb05b url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" palette_generator: dependency: "direct main" description: @@ -1074,18 +1074,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a + sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" url: "https://pub.dev" source: hosted - version: "2.2.12" + version: "2.2.15" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -1219,10 +1219,10 @@ packages: dependency: "direct main" description: name: podcast_search - sha256: c2ca2529a7f561827cc62db6c4fba6cade0249936455912a902688125c90bd5c + sha256: "30eae661851bcdba2a10007b350cd0633374bbe688a98e82e2b5bf45f2742cd8" url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" pointycastle: dependency: transitive description: @@ -1243,10 +1243,10 @@ packages: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pubspec_parse: dependency: transitive description: @@ -1275,10 +1275,10 @@ packages: dependency: transitive description: name: rss_dart - sha256: "81bbcc1a5205546f2a85ebadf8f29f5b090ccb5781f400f3713cf02f1cc992ee" + sha256: "81d45b53c88eac17991edf2ecdd468423c542c0290fa2950a3bea9affa0e956b" url: "https://pub.dev" source: hosted - version: "1.0.10" + version: "1.0.12" rxdart: dependency: transitive description: @@ -1371,26 +1371,26 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" + sha256: "3c7e73920c694a436afaf65ab60ce3453d91f84208d761fbd83fc21182134d93" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.4" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab" + sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d" + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" shared_preferences_linux: dependency: transitive description: @@ -1552,10 +1552,10 @@ packages: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: @@ -1632,10 +1632,10 @@ packages: dependency: transitive description: name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" typed_data: dependency: transitive description: @@ -1680,10 +1680,10 @@ packages: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_linux: dependency: transitive description: @@ -1696,10 +1696,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: @@ -1776,18 +1776,18 @@ packages: dependency: "direct main" description: name: watch_it - sha256: aadbf4ddff777434fc17645d68c5337fc259960f063b900fe83fb9a61b18cb08 + sha256: cdde70641e090d6ab8cf80476bb6346fb9b6c85791ab7f7904e28d8736fa3d44 url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "1.6.1" watcher: dependency: transitive description: name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web: dependency: transitive description: @@ -1816,10 +1816,10 @@ packages: dependency: "direct main" description: name: win32 - sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2" + sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.9.0" win32_registry: dependency: transitive description: @@ -1863,12 +1863,11 @@ packages: yaru: dependency: "direct main" description: - path: "." - ref: b907e6bf9d84ee3b15bfe0cb9c6cb58b45ca3fe2 - resolved-ref: b907e6bf9d84ee3b15bfe0cb9c6cb58b45ca3fe2 - url: "https://github.com/ubuntu/yaru.dart" - source: git - version: "5.3.2" + name: yaru + sha256: "5fb1886e15f736b26c717725e335e80af7dbc91d9324d1d3e6bd355deed448a0" + url: "https://pub.dev" + source: hosted + version: "6.0.0" yaru_window: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 3b912e1f4..ec420f93a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -83,10 +83,7 @@ dependencies: win32: ^5.5.4 window_manager: ^0.4.2 xdg_directories: ^1.0.4 - yaru: - git: - url: https://github.com/ubuntu/yaru.dart - ref: b907e6bf9d84ee3b15bfe0cb9c6cb58b45ca3fe2 + yaru: ^6.0.0 yaru_window: ^0.2.1+1 yaru_window_linux: ^0.2.0+1