From b908c0c6cd22b94dd48d832e9fcc9a09bf3cd5e8 Mon Sep 17 00:00:00 2001 From: pato05 Date: Mon, 1 Nov 2021 17:54:56 +0100 Subject: [PATCH] replace most toasts with in-app snackbars --- lib/api/definitions.dart | 14 +++++ lib/ui/details_screens.dart | 39 +++++------- lib/ui/importer_screen.dart | 20 ++---- lib/ui/library.dart | 5 +- lib/ui/login_screen.dart | 6 +- lib/ui/menu.dart | 72 ++++++---------------- lib/ui/settings_screen.dart | 4 +- pubspec.lock | 118 ++++++++++++++++++------------------ 8 files changed, 118 insertions(+), 160 deletions(-) diff --git a/lib/api/definitions.dart b/lib/api/definitions.dart index ea2b31e..f92ce0c 100644 --- a/lib/api/definitions.dart +++ b/lib/api/definitions.dart @@ -1175,3 +1175,17 @@ enum NavigatorRouteType { /// Standard cupertino route look cupertino, } + +extension ScaffoldMessengerSnack on ScaffoldMessengerState { + ScaffoldFeatureController snack( + String content, { + SnackBarBehavior behavior = SnackBarBehavior.floating, + SnackBarAction? action, + Duration? duration, + }) => + showSnackBar(SnackBar( + content: Text(content), + behavior: behavior, + duration: duration ?? const Duration(seconds: 4), + action: action)); +} diff --git a/lib/ui/details_screens.dart b/lib/ui/details_screens.dart index daa5433..b540a97 100644 --- a/lib/ui/details_screens.dart +++ b/lib/ui/details_screens.dart @@ -202,16 +202,15 @@ class _AlbumDetailsState extends State { //Add to library if (!album!.library!) { await deezerAPI.addFavoriteAlbum(album!.id); - ScaffoldMessenger.of(context).snack + ScaffoldMessenger.of(context) + .snack('Added to library'.i18n); setState(() => album!.library = true); return; } //Remove await deezerAPI.removeAlbum(album!.id); - Fluttertoast.showToast( - msg: 'Album removed from library!'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Album removed from library!'.i18n); setState(() => album!.library = false); }, ), @@ -311,10 +310,8 @@ class _MakeAlbumOfflineState extends State { return; } downloadManager.removeOfflineAlbum(widget.album!.id); - Fluttertoast.showToast( - msg: "Removed album from offline!".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context) + .snack("Removed album from offline!".i18n); setState(() { _offline = false; }); @@ -444,10 +441,8 @@ class ArtistDetails extends StatelessWidget { ), onPressed: () async { await deezerAPI.addFavoriteArtist(artist.id); - Fluttertoast.showToast( - msg: 'Added to library'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Added to library'.i18n); }, ), if ((artist.radio ?? false)) @@ -1000,19 +995,15 @@ class _PlaylistDetailsState extends State { //Add to library if (!playlist!.library!) { await deezerAPI.addPlaylist(playlist!.id!); - Fluttertoast.showToast( - msg: 'Added to library'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Added to library'.i18n); setState(() => playlist!.library = true); return; } //Remove await deezerAPI.removePlaylist(playlist!.id!); - Fluttertoast.showToast( - msg: 'Playlist removed from library!'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Playlist removed from library!'.i18n); setState(() => playlist!.library = false); }, ), @@ -1164,10 +1155,8 @@ class _MakePlaylistOfflineState extends State { return; } downloadManager.removeOfflinePlaylist(widget.playlist!.id); - Fluttertoast.showToast( - msg: "Playlist removed from offline!".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context) + .snack("Playlist removed from offline!".i18n); setState(() { _offline = false; }); diff --git a/lib/ui/importer_screen.dart b/lib/ui/importer_screen.dart index 9ff529b..c8d9e6c 100644 --- a/lib/ui/importer_screen.dart +++ b/lib/ui/importer_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:freezer/api/definitions.dart'; import 'package:freezer/settings.dart'; import 'package:freezer/ui/menu.dart'; import 'package:freezer/api/importer.dart'; @@ -418,11 +419,8 @@ class _SpotifyImporterV2State extends State { child: Text("Copy the Redirect URL".i18n), onPressed: () async { await Clipboard.setData( - new ClipboardData(text: "http://localhost:42069")); - Fluttertoast.showToast( - msg: "Copied".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ClipboardData(text: "http://localhost:42069")); + ScaffoldMessenger.of(context).snack("Copied".i18n); }, ), ), @@ -438,7 +436,7 @@ class _SpotifyImporterV2State extends State { onChanged: (v) => setState(() => _clientId = v), ), ), - Container(width: 16.0), + const SizedBox(width: 16.0), Flexible( child: TextField( controller: TextEditingController(text: _clientSecret), @@ -520,10 +518,7 @@ class _SpotifyImporterV2MainState extends State { _urlPlaylist = playlist; }); } catch (e) { - Fluttertoast.showToast( - msg: "Invalid/Unsupported URL".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context).snack("Invalid/Unsupported URL".i18n); setState(() => _urlLoading = false); return; } @@ -559,10 +554,7 @@ class _SpotifyImporterV2MainState extends State { Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (context) => ImporterStatusScreen())); } catch (e) { - Fluttertoast.showToast( - msg: e.toString(), - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context).snack(e.toString()); Navigator.of(context).pop(); return; } diff --git a/lib/ui/library.dart b/lib/ui/library.dart index 1ecb21a..80d2ee1 100644 --- a/lib/ui/library.dart +++ b/lib/ui/library.dart @@ -1093,9 +1093,8 @@ class _LibraryPlaylistsState extends State { LeadingIcon(Icons.playlist_add, color: Color(0xff009a85)), onTap: () async { if (settings.offlineMode) { - Fluttertoast.showToast( - msg: 'Cannot create playlists in offline mode'.i18n, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Cannot create playlists in offline mode'.i18n); return; } MenuSheet m = MenuSheet(context); diff --git a/lib/ui/login_screen.dart b/lib/ui/login_screen.dart index 26517ff..b34f145 100644 --- a/lib/ui/login_screen.dart +++ b/lib/ui/login_screen.dart @@ -419,10 +419,8 @@ class _EmailLoginState extends State { if (_email != null && _password != null) await _login(); else - Fluttertoast.showToast( - msg: "Missing email or password!".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context) + .snack("Missing email or password!".i18n); }, ) ], diff --git a/lib/ui/menu.dart b/lib/ui/menu.dart index f6c911a..b1421b2 100644 --- a/lib/ui/menu.dart +++ b/lib/ui/menu.dart @@ -180,10 +180,7 @@ class MenuSheet { if (await downloadManager.checkOffline(playlist: p)) { downloadManager.addOfflinePlaylist(p); } - Fluttertoast.showToast( - msg: 'Added to library'.i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context).snack('Added to library'.i18n); //Add to cache if (cache.libraryTracks == null) cache.libraryTracks = []; cache.libraryTracks!.add(t.id); @@ -218,11 +215,8 @@ class MenuSheet { if (await downloadManager.checkOffline(playlist: p)) { downloadManager.addOfflinePlaylist(p); } - Fluttertoast.showToast( - msg: "Track added to".i18n + " ${p.title}", - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - ); + ScaffoldMessenger.of(context) + .snack("Track added to".i18n + " ${p.title}"); }); }); _close(); @@ -234,11 +228,8 @@ class MenuSheet { leading: Icon(Icons.delete), onTap: () async { await deezerAPI.removeFromPlaylist(t.id, p!.id); - Fluttertoast.showToast( - msg: 'Track removed from'.i18n + ' ${p.title}', - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - ); + ScaffoldMessenger.of(context) + .snack('Track removed from'.i18n + ' ${p.title}'); _close(); }, ); @@ -256,10 +247,8 @@ class MenuSheet { //Remove from cache if (cache.libraryTracks != null) cache.libraryTracks!.removeWhere((i) => i == t.id); - Fluttertoast.showToast( - msg: 'Track removed from library'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Track removed from library'.i18n); if (onUpdate != null) onUpdate(); _close(); }, @@ -321,10 +310,8 @@ class MenuSheet { onTap: () async { if (isOffline) { await downloadManager.removeOfflineTracks([track]); - Fluttertoast.showToast( - msg: "Track removed from offline!".i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context) + .snack("Track removed from offline!".i18n); } else { await downloadManager.addOfflineTrack(track, private: true, context: context); @@ -383,8 +370,7 @@ class MenuSheet { leading: Icon(Icons.library_music), onTap: () async { await deezerAPI.addFavoriteAlbum(a.id); - Fluttertoast.showToast( - msg: 'Added to library'.i18n, gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Added to library'.i18n); _close(); }, ); @@ -396,11 +382,7 @@ class MenuSheet { onTap: () async { await deezerAPI.removeAlbum(a.id); await downloadManager.removeOfflineAlbum(a.id); - Fluttertoast.showToast( - msg: 'Album removed'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - ); + ScaffoldMessenger.of(context).snack('Album removed'.i18n); if (onRemove != null) onRemove(); _close(); }, @@ -430,10 +412,8 @@ class MenuSheet { leading: Icon(Icons.delete), onTap: () async { await deezerAPI.removeArtist(a.id); - Fluttertoast.showToast( - msg: 'Artist removed from library'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context) + .snack('Artist removed from library'.i18n); if (onRemove != null) onRemove(); _close(); }, @@ -444,10 +424,7 @@ class MenuSheet { leading: Icon(Icons.favorite), onTap: () async { await deezerAPI.addFavoriteArtist(a.id); - Fluttertoast.showToast( - msg: 'Added to library'.i18n, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Added to library'.i18n); _close(); }, ); @@ -499,9 +476,7 @@ class MenuSheet { leading: Icon(Icons.favorite), onTap: () async { await deezerAPI.addPlaylist(p.id!); - Fluttertoast.showToast( - msg: 'Added playlist to library'.i18n, - gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Added playlist to library'.i18n); _close(); }, ); @@ -577,10 +552,7 @@ class MenuSheet { //=================== showDownloadStartedToast() { - Fluttertoast.showToast( - msg: 'Downloads added!'.i18n, - gravity: ToastGravity.BOTTOM, - toastLength: Toast.LENGTH_SHORT); + ScaffoldMessenger.of(context).snack('Downloads added!'.i18n); } //Create playlist @@ -620,15 +592,13 @@ class MenuSheet { //Enable if (!cache.wakelock) { Wakelock.enable(); - Fluttertoast.showToast( - msg: 'Wakelock enabled!'.i18n, gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Wakelock enabled!'.i18n); cache.wakelock = true; return; } //Disable Wakelock.disable(); - Fluttertoast.showToast( - msg: 'Wakelock disabled!'.i18n, gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Wakelock disabled!'.i18n); cache.wakelock = false; }, ); @@ -892,8 +862,7 @@ class _CreatePlaylistDialogState extends State { await deezerAPI.updatePlaylist(widget.playlist!.id!, _titleController!.value.text, _descController!.value.text, status: _playlistType); - Fluttertoast.showToast( - msg: 'Playlist updated!'.i18n, gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Playlist updated!'.i18n); } else { List tracks = []; if (widget.tracks != null) { @@ -903,8 +872,7 @@ class _CreatePlaylistDialogState extends State { status: _playlistType, description: _description, trackIds: tracks); - Fluttertoast.showToast( - msg: 'Playlist created!'.i18n, gravity: ToastGravity.BOTTOM); + ScaffoldMessenger.of(context).snack('Playlist created!'.i18n); } Navigator.of(context).pop(); }, diff --git a/lib/ui/settings_screen.dart b/lib/ui/settings_screen.dart index 5dffe02..54222e1 100644 --- a/lib/ui/settings_screen.dart +++ b/lib/ui/settings_screen.dart @@ -1313,9 +1313,7 @@ class _GeneralSettingsState extends State { leading: Icon(Icons.lock), onTap: () async { Clipboard.setData(ClipboardData(text: settings.arl)); - await Fluttertoast.showToast( - msg: 'Copied'.i18n, - ); + await ScaffoldMessenger.of(context).snack('Copied'.i18n); }, ), ], diff --git a/pubspec.lock b/pubspec.lock index 6f9d598..cac9816 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,21 +7,21 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "24.0.0" + version: "30.0.0" analyzer: dependency: "direct overridden" description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.7.0" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" async: dependency: "direct main" description: @@ -35,7 +35,7 @@ packages: name: audio_service url: "https://pub.dartlang.org" source: hosted - version: "0.18.0-beta.0" + version: "0.18.1" audio_service_platform_interface: dependency: transitive description: @@ -49,14 +49,14 @@ packages: name: audio_service_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.1.1" audio_session: dependency: "direct main" description: name: audio_session url: "https://pub.dartlang.org" source: hosted - version: "0.1.6" + version: "0.1.6+1" boolean_selector: dependency: transitive description: @@ -70,7 +70,7 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" build_config: dependency: transitive description: @@ -84,7 +84,7 @@ packages: name: build_daemon url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.1" build_resolvers: dependency: transitive description: @@ -98,28 +98,28 @@ packages: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.4" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "7.1.0" + version: "7.2.2" built_collection: dependency: transitive description: name: built_collection url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "5.1.1" built_value: dependency: transitive description: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.1.2" + version: "8.1.3" cached_network_image: dependency: "direct main" description: @@ -168,7 +168,7 @@ packages: name: cli_util url: "https://pub.dartlang.org" source: hosted - version: "0.3.3" + version: "0.3.5" clock: dependency: transitive description: @@ -252,21 +252,21 @@ packages: name: csslib url: "https://pub.dartlang.org" source: hosted - version: "0.17.0" + version: "0.17.1" dart_style: dependency: transitive description: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.2.0" dio: dependency: transitive description: name: dio url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.1" disk_space: dependency: "direct main" description: @@ -305,7 +305,7 @@ packages: name: fading_edge_scrollview url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" fake_async: dependency: transitive description: @@ -380,7 +380,7 @@ packages: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "8.1.1+2" + version: "8.2.0" flutter_local_notifications_platform_interface: dependency: transitive description: @@ -451,7 +451,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" google_fonts: dependency: "direct main" description: @@ -465,7 +465,7 @@ packages: name: graphs url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" html: dependency: "direct main" description: @@ -479,7 +479,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.4" http_multi_server: dependency: transitive description: @@ -500,7 +500,7 @@ packages: name: i18n_extension url: "https://pub.dartlang.org" source: hosted - version: "4.1.1" + version: "4.1.3" infinite_listview: dependency: transitive description: @@ -542,16 +542,16 @@ packages: name: json_serializable url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.0.2" just_audio: dependency: "direct main" description: path: just_audio ref: dev - resolved-ref: "27a777fbb5e0fca2c9db6bdf1cdc9672b3fe9971" + resolved-ref: feb12085f1b055959d2cef70b7fb232454b77bf1 url: "https://github.com/ryanheise/just_audio.git" source: git - version: "0.9.8" + version: "0.9.15" just_audio_platform_interface: dependency: transitive description: @@ -565,14 +565,14 @@ packages: name: just_audio_web url: "https://pub.dartlang.org" source: hosted - version: "0.4.1" + version: "0.4.2" logging: dependency: transitive description: name: logging url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" marquee: dependency: "direct main" description: @@ -600,7 +600,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" move_to_background: dependency: "direct main" description: @@ -649,7 +649,7 @@ packages: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" package_info: dependency: "direct main" description: @@ -663,7 +663,7 @@ packages: name: palette_generator url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.3.2" path: dependency: "direct main" description: @@ -677,14 +677,14 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.6" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.1.0" path_provider_macos: dependency: transitive description: @@ -719,21 +719,21 @@ packages: name: permission_handler url: "https://pub.dartlang.org" source: hosted - version: "8.1.4+2" + version: "8.2.5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.6.1" + version: "3.7.0" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.2.0" + version: "4.4.0" photo_view: dependency: "direct main" description: @@ -754,7 +754,7 @@ packages: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" pool: dependency: transitive description: @@ -768,35 +768,35 @@ packages: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.2.3" + version: "4.2.4" provider: dependency: "direct main" description: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.0" + version: "6.0.1" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" pubspec_parse: dependency: transitive description: name: pubspec_parse url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0" quick_actions: dependency: "direct main" description: name: quick_actions url: "https://pub.dartlang.org" source: hosted - version: "0.6.0+6" + version: "0.6.0+7" quick_actions_platform_interface: dependency: transitive description: @@ -817,7 +817,7 @@ packages: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.27.1" + version: "0.27.2" scrobblenaut: dependency: "direct main" description: @@ -859,14 +859,14 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" source_helper: dependency: transitive description: name: source_helper url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.3.0" source_span: dependency: transitive description: @@ -901,7 +901,7 @@ packages: name: sqflite_common url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.1+1" stack_trace: dependency: transitive description: @@ -999,21 +999,21 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.9" + version: "6.0.12" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" url_launcher_platform_interface: dependency: transitive description: @@ -1041,7 +1041,7 @@ packages: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "3.0.4" + version: "3.0.5" vector_math: dependency: transitive description: @@ -1062,42 +1062,42 @@ packages: name: wakelock url: "https://pub.dartlang.org" source: hosted - version: "0.5.3+3" + version: "0.5.6" wakelock_macos: dependency: transitive description: name: wakelock_macos url: "https://pub.dartlang.org" source: hosted - version: "0.1.0+2" + version: "0.4.0" wakelock_platform_interface: dependency: transitive description: name: wakelock_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "0.2.1+2" + version: "0.3.0" wakelock_web: dependency: transitive description: name: wakelock_web url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+2" + version: "0.4.0" wakelock_windows: dependency: transitive description: name: wakelock_windows url: "https://pub.dartlang.org" source: hosted - version: "0.1.0+1" + version: "0.2.0" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -1111,7 +1111,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.2.8" + version: "2.2.10" xdg_directories: dependency: transitive description: @@ -1125,7 +1125,7 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "5.3.1" yaml: dependency: transitive description: @@ -1134,5 +1134,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=2.13.0 <3.0.0" - flutter: ">=2.2.0" + dart: ">=2.14.0 <3.0.0" + flutter: ">=2.5.0"