feat: use typed assets instead of hard coded paths

This commit is contained in:
Kingkor Roy Tirtho 2023-01-31 14:53:21 +06:00
parent c809d2daba
commit 59561abdc2
17 changed files with 351 additions and 139 deletions

View File

@ -1,4 +1,4 @@
{
"flutterSdkVersion": "3.0.5",
"flutterSdkVersion": "3.3.8",
"flavors": {}
}

View File

@ -0,0 +1,182 @@
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************
// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter/services.dart';
class $AssetsTutorialGen {
const $AssetsTutorialGen();
/// File path: assets/tutorial/step-1.png
AssetGenImage get step1 => const AssetGenImage('assets/tutorial/step-1.png');
/// File path: assets/tutorial/step-2.png
AssetGenImage get step2 => const AssetGenImage('assets/tutorial/step-2.png');
/// File path: assets/tutorial/step-3.png
AssetGenImage get step3 => const AssetGenImage('assets/tutorial/step-3.png');
/// List of all assets
List<AssetGenImage> get values => [step1, step2, step3];
}
class Assets {
Assets._();
static const AssetGenImage albumPlaceholder =
AssetGenImage('assets/album-placeholder.png');
static const AssetGenImage emptyBox = AssetGenImage('assets/empty_box.png');
static const AssetGenImage placeholder =
AssetGenImage('assets/placeholder.png');
static const AssetGenImage spotubeLogoForeground =
AssetGenImage('assets/spotube-logo-foreground.jpg');
static const AssetGenImage spotubeLogoPng =
AssetGenImage('assets/spotube-logo.png');
static const SvgGenImage spotubeLogoSvg =
SvgGenImage('assets/spotube-logo.svg');
static const AssetGenImage spotubeScreenshot =
AssetGenImage('assets/spotube-screenshot.jpg');
static const AssetGenImage spotubeBanner =
AssetGenImage('assets/spotube_banner.png');
static const AssetGenImage success = AssetGenImage('assets/success.png');
static const $AssetsTutorialGen tutorial = $AssetsTutorialGen();
static const AssetGenImage userPlaceholder =
AssetGenImage('assets/user-placeholder.png');
/// List of all assets
List<dynamic> get values => [
albumPlaceholder,
emptyBox,
placeholder,
spotubeLogoForeground,
spotubeLogoPng,
spotubeLogoSvg,
spotubeScreenshot,
spotubeBanner,
success,
userPlaceholder
];
}
class AssetGenImage {
const AssetGenImage(this._assetName);
final String _assetName;
Image image({
Key? key,
AssetBundle? bundle,
ImageFrameBuilder? frameBuilder,
ImageErrorWidgetBuilder? errorBuilder,
String? semanticLabel,
bool excludeFromSemantics = false,
double? scale,
double? width,
double? height,
Color? color,
Animation<double>? opacity,
BlendMode? colorBlendMode,
BoxFit? fit,
AlignmentGeometry alignment = Alignment.center,
ImageRepeat repeat = ImageRepeat.noRepeat,
Rect? centerSlice,
bool matchTextDirection = false,
bool gaplessPlayback = false,
bool isAntiAlias = false,
String? package,
FilterQuality filterQuality = FilterQuality.low,
int? cacheWidth,
int? cacheHeight,
}) {
return Image.asset(
_assetName,
key: key,
bundle: bundle,
frameBuilder: frameBuilder,
errorBuilder: errorBuilder,
semanticLabel: semanticLabel,
excludeFromSemantics: excludeFromSemantics,
scale: scale,
width: width,
height: height,
color: color,
opacity: opacity,
colorBlendMode: colorBlendMode,
fit: fit,
alignment: alignment,
repeat: repeat,
centerSlice: centerSlice,
matchTextDirection: matchTextDirection,
gaplessPlayback: gaplessPlayback,
isAntiAlias: isAntiAlias,
package: package,
filterQuality: filterQuality,
cacheWidth: cacheWidth,
cacheHeight: cacheHeight,
);
}
ImageProvider provider() => AssetImage(_assetName);
String get path => _assetName;
String get keyName => _assetName;
}
class SvgGenImage {
const SvgGenImage(this._assetName);
final String _assetName;
SvgPicture svg({
Key? key,
bool matchTextDirection = false,
AssetBundle? bundle,
String? package,
double? width,
double? height,
BoxFit fit = BoxFit.contain,
AlignmentGeometry alignment = Alignment.center,
bool allowDrawingOutsideViewBox = false,
WidgetBuilder? placeholderBuilder,
Color? color,
BlendMode colorBlendMode = BlendMode.srcIn,
String? semanticsLabel,
bool excludeFromSemantics = false,
Clip clipBehavior = Clip.hardEdge,
bool cacheColorFilter = false,
SvgTheme? theme,
}) {
return SvgPicture.asset(
_assetName,
key: key,
matchTextDirection: matchTextDirection,
bundle: bundle,
package: package,
width: width,
height: height,
fit: fit,
alignment: alignment,
allowDrawingOutsideViewBox: allowDrawingOutsideViewBox,
placeholderBuilder: placeholderBuilder,
color: color,
colorBlendMode: colorBlendMode,
semanticsLabel: semanticsLabel,
excludeFromSemantics: excludeFromSemantics,
clipBehavior: clipBehavior,
cacheColorFilter: cacheColorFilter,
theme: theme,
);
}
String get path => _assetName;
String get keyName => _assetName;
}

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/hooks/use_breakpoints.dart';
import 'package:spotube/provider/playback_provider.dart';
@ -27,8 +28,7 @@ class PlayerTrackDetails extends HookConsumerWidget {
height: 50,
width: 50,
placeholder: (context, url) {
return Image.asset(
"assets/album-placeholder.png",
return Assets.albumPlaceholder.image(
height: 50,
width: 50,
);

View File

@ -5,6 +5,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:macos_ui/macos_ui.dart';
import 'package:fluent_ui/fluent_ui.dart' as fluent_ui;
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/player/player_actions.dart';
import 'package:spotube/components/player/player_overlay.dart';
import 'package:spotube/components/player/player_track_details.dart';
@ -36,7 +37,7 @@ class BottomPlayer extends HookConsumerWidget {
index: (playback.track?.album?.images?.length ?? 1) - 1,
placeholder: ImagePlaceholder.albumArt,
)
: "assets/album-placeholder.png",
: Assets.albumPlaceholder.path,
[playback.track?.album?.images],
);

View File

@ -3,8 +3,9 @@ import 'package:fl_query_hooks/fl_query_hooks.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:flutter/material.dart';
import 'package:flutter/material.dart' hide Badge;
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/side_bar_tiles.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/image/universal_image.dart';
@ -37,10 +38,7 @@ class Sidebar extends HookConsumerWidget {
color: Colors.black,
borderRadius: BorderRadius.circular(50),
),
child: Image.asset(
"assets/spotube-logo.png",
height: 50,
),
child: Assets.spotubeLogoPng.image(height: 50),
);
}
@ -242,8 +240,7 @@ class SidebarFooter extends HookConsumerWidget {
backgroundImage:
UniversalImage.imageProvider(avatarImg),
onBackgroundImageError: (exception, stackTrace) =>
Image.asset(
"assets/user-placeholder.png",
Assets.userPlaceholder.image(
height: 16,
width: 16,
),

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:spotube/collections/assets.gen.dart';
class NotFound extends StatelessWidget {
final bool vertical;
@ -10,7 +11,7 @@ class NotFound extends StatelessWidget {
SizedBox(
height: 150,
width: 150,
child: Image.asset("assets/empty_box.png"),
child: Assets.emptyBox.image(),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,

View File

@ -4,6 +4,7 @@ import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:spotube/collections/assets.gen.dart';
class UniversalImage extends HookWidget {
final String path;
@ -64,8 +65,7 @@ class UniversalImage extends HookWidget {
scale: scale,
errorBuilder: (context, error, stackTrace) {
return placeholder?.call(context, error.toString()) ??
Image.asset(
"assets/placeholder.png",
Assets.placeholder.image(
width: width,
height: height,
cacheHeight: height?.toInt(),
@ -84,8 +84,7 @@ class UniversalImage extends HookWidget {
scale: scale,
errorBuilder: (context, error, stackTrace) {
return placeholder?.call(context, error.toString()) ??
Image.asset(
"assets/placeholder.png",
Assets.placeholder.image(
width: width,
height: height,
cacheHeight: height?.toInt(),
@ -105,8 +104,7 @@ class UniversalImage extends HookWidget {
scale: scale,
errorBuilder: (context, error, stackTrace) {
return placeholder?.call(context, error.toString()) ??
Image.asset(
"assets/placeholder.png",
Assets.placeholder.image(
width: width,
height: height,
cacheHeight: height?.toInt(),

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/hover_builder.dart';
import 'package:spotube/components/shared/spotube_marquee_text.dart';
@ -114,8 +115,7 @@ class PlaybuttonCard extends HookWidget {
child: UniversalImage(
path: imageUrl,
width: isSquare ? 200 : 60,
placeholder: (context, url) =>
Image.asset("assets/placeholder.png"),
placeholder: (context, url) => Assets.placeholder.image(),
),
),
);

View File

@ -5,6 +5,7 @@ import 'package:fuzzywuzzy/fuzzywuzzy.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/compact_search.dart';
import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
@ -185,7 +186,7 @@ class TrackCollectionView<T> extends HookConsumerWidget {
child: searchbar,
);
});
Overlay.of(context)!.insert(entry!);
Overlay.of(context)?.insert(entry!);
}
});
return () => entry?.remove();
@ -274,9 +275,7 @@ class TrackCollectionView<T> extends HookConsumerWidget {
child: UniversalImage(
path: titleImage,
placeholder: (context, url) {
return const UniversalImage(
path: "assets/album-placeholder.png",
);
return Assets.albumPlaceholder.image();
},
),
),

View File

@ -7,6 +7,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart' hide Image;
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/adaptive/adaptive_popup_menu_button.dart';
import 'package:spotube/components/shared/heart_button.dart';
@ -227,8 +228,7 @@ class TrackTile extends HookConsumerWidget {
height: 40,
width: 40,
placeholder: (context, url) {
return Image.asset(
"assets/album-placeholder.png",
return Assets.albumPlaceholder.image(
height: 40,
width: 40,
);

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/desktop_login/login_form.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/hooks/use_breakpoints.dart';
@ -30,8 +31,7 @@ class DesktopLoginPage extends HookConsumerWidget {
),
child: Column(
children: [
Image.asset(
"assets/spotube-logo.png",
Assets.spotubeLogoPng.image(
width: MediaQuery.of(context).size.width *
(breakpoint <= Breakpoints.md ? .5 : .3),
),

View File

@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:introduction_screen/introduction_screen.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/desktop_login/login_form.dart';
import 'package:spotube/components/shared/links/hyper_link.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart';
@ -61,7 +62,7 @@ class LoginTutorial extends ConsumerWidget {
PageViewModel(
decoration: pageDecoration,
title: "Step 1",
image: Image.asset("assets/tutorial/step-1.png"),
image: Assets.tutorial.step1.image(),
bodyWidget: Wrap(
children: const [
PlatformText(
@ -80,7 +81,7 @@ class LoginTutorial extends ConsumerWidget {
PageViewModel(
decoration: pageDecoration,
title: "Step 2",
image: Image.asset("assets/tutorial/step-2.png"),
image: Assets.tutorial.step2.image(),
bodyWidget: const PlatformText(
"1. Once you're logged in, press F12 or Mouse Right Click > Inspect to Open the Browser devtools.\n2. Then go the \"Application\" Tab (Chrome, Edge, Brave etc..) or \"Storage\" Tab (Firefox, Palemoon etc..)\n3. Go to the \"Cookies\" section then the \"https://accounts.spotify.com\" subsection",
textAlign: TextAlign.left,
@ -89,9 +90,7 @@ class LoginTutorial extends ConsumerWidget {
PageViewModel(
decoration: pageDecoration,
title: "Step 3",
image: Image.asset(
"assets/tutorial/step-3.png",
),
image: Assets.tutorial.step3.image(),
bodyWidget: const PlatformText(
"Copy the values of \"sp_dc\" and \"sp_key\" Cookies",
textAlign: TextAlign.left,
@ -103,7 +102,7 @@ class LoginTutorial extends ConsumerWidget {
bodyAlignment: Alignment.center,
),
title: "Success🥳",
image: Image.asset("assets/success.png"),
image: Assets.success.image(),
body:
"Now you're successfully Logged In with your Spotify account. Good Job, mate!",
)

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/hooks/use_package_info.dart';
@ -26,8 +27,7 @@ class AboutSpotube extends HookConsumerWidget {
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
children: [
Image.asset(
"assets/spotube-logo.png",
Assets.spotubeLogoPng.image(
height: 200,
width: 200,
),

View File

@ -5,6 +5,7 @@ import 'dart:io';
import 'package:flutter/widgets.dart' hide Image;
import 'package:metadata_god/metadata_god.dart' hide Image;
import 'package:path/path.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/shared/links/anchor_button.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/models/spotube_track.dart';
@ -26,9 +27,9 @@ abstract class TypeConversionUtils {
required ImagePlaceholder placeholder,
}) {
final String placeholderUrl = {
ImagePlaceholder.albumArt: "assets/album-placeholder.png",
ImagePlaceholder.artist: "assets/user-placeholder.png",
ImagePlaceholder.collection: "assets/placeholder.png",
ImagePlaceholder.albumArt: Assets.albumPlaceholder.path,
ImagePlaceholder.artist: Assets.userPlaceholder.path,
ImagePlaceholder.collection: Assets.placeholder.path,
ImagePlaceholder.online:
"https://avatars.dicebear.com/api/bottts/${PrimitiveUtils.uuid.v4()}.png",
}[placeholder]!;

View File

@ -12,9 +12,9 @@ import connectivity_plus_macos
import macos_ui
import metadata_god
import package_info_plus_macos
import path_provider_macos
import path_provider_foundation
import screen_retriever
import shared_preferences_macos
import shared_preferences_foundation
import sqflite
import url_launcher_macos
import window_manager

View File

@ -84,14 +84,14 @@ packages:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
version: "3.3.6"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.1"
version: "2.3.2"
async:
dependency: transitive
description:
@ -105,7 +105,7 @@ packages:
name: audio_service
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.7"
version: "0.18.9"
audio_service_platform_interface:
dependency: transitive
description:
@ -126,7 +126,7 @@ packages:
name: audio_session
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.10"
version: "0.1.13"
audioplayers:
dependency: "direct main"
description:
@ -217,7 +217,7 @@ packages:
name: build_config
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "1.1.1"
build_daemon:
dependency: transitive
description:
@ -238,14 +238,14 @@ packages:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.2"
version: "2.3.3"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
url: "https://pub.dartlang.org"
source: hosted
version: "7.2.3"
version: "7.2.7"
built_collection:
dependency: transitive
description:
@ -259,14 +259,14 @@ packages:
name: built_value
url: "https://pub.dartlang.org"
source: hosted
version: "8.3.2"
version: "8.4.3"
cached_network_image:
dependency: "direct main"
description:
name: cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.2"
version: "3.2.3"
cached_network_image_platform_interface:
dependency: transitive
description:
@ -294,7 +294,7 @@ packages:
name: checked_yaml
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.0.2"
cli_util:
dependency: transitive
description:
@ -315,7 +315,7 @@ packages:
name: code_builder
url: "https://pub.dartlang.org"
source: hosted
version: "4.3.0"
version: "4.4.0"
collection:
dependency: "direct main"
description:
@ -323,6 +323,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.16.0"
color:
dependency: transitive
description:
name: color
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
colorize:
dependency: transitive
description:
@ -350,14 +357,14 @@ packages:
name: connectivity_plus_macos
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.4"
version: "1.2.6"
connectivity_plus_platform_interface:
dependency: transitive
description:
name: connectivity_plus_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
version: "1.2.3"
connectivity_plus_web:
dependency: transitive
description:
@ -378,7 +385,7 @@ packages:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.1.1"
crypto:
dependency: transitive
description:
@ -392,7 +399,7 @@ packages:
name: csslib
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.1"
version: "0.17.2"
cupertino_icons:
dependency: "direct main"
description:
@ -407,6 +414,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.4"
dartx:
dependency: transitive
description:
name: dartx
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
dbus:
dependency: "direct main"
description:
@ -448,14 +462,14 @@ packages:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.2"
version: "6.1.4"
file_picker:
dependency: "direct main"
description:
name: file_picker
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.2"
version: "5.2.5"
fixnum:
dependency: transitive
description:
@ -490,7 +504,7 @@ packages:
name: fluentui_system_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.189"
version: "1.1.190"
flutter:
dependency: "direct main"
description: flutter
@ -538,6 +552,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0+1"
flutter_gen_core:
dependency: transitive
description:
name: flutter_gen_core
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0+1"
flutter_gen_runner:
dependency: "direct dev"
description:
name: flutter_gen_runner
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0+1"
flutter_hooks:
dependency: "direct main"
description:
@ -584,14 +612,14 @@ packages:
name: flutter_riverpod
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.3"
flutter_rust_bridge:
dependency: transitive
description:
name: flutter_rust_bridge
url: "https://pub.dartlang.org"
source: hosted
version: "1.59.0"
version: "1.62.0"
flutter_svg:
dependency: "direct main"
description:
@ -615,14 +643,14 @@ packages:
name: freezed_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.2.0"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "3.2.0"
fuzzywuzzy:
dependency: "direct main"
description:
@ -636,28 +664,28 @@ packages:
name: glob
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.1.1"
go_router:
dependency: "direct main"
description:
name: go_router
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.0"
version: "5.2.4"
graphs:
dependency: transitive
description:
name: graphs
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.2.0"
gsettings:
dependency: transitive
description:
name: gsettings
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.5"
version: "0.2.7"
hive:
dependency: "direct main"
description:
@ -685,7 +713,7 @@ packages:
name: hooks_riverpod
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.3"
html:
dependency: "direct main"
description:
@ -706,21 +734,21 @@ packages:
name: http_multi_server
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
version: "3.2.1"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
version: "4.0.2"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
version: "3.3.0"
intl:
dependency: transitive
description:
@ -734,14 +762,14 @@ packages:
name: introduction_screen
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.1.4"
io:
dependency: transitive
description:
name: io
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
version: "1.0.4"
js:
dependency: transitive
description:
@ -755,7 +783,7 @@ packages:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.5.0"
version: "4.8.0"
libadwaita:
dependency: "direct main"
description:
@ -776,7 +804,7 @@ packages:
name: lints
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
logger:
dependency: "direct main"
description:
@ -790,14 +818,14 @@ packages:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
version: "1.1.1"
macos_ui:
dependency: "direct main"
description:
name: macos_ui
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.5"
version: "1.7.6"
marquee:
dependency: "direct main"
description:
@ -839,7 +867,7 @@ packages:
name: mime
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
version: "1.0.4"
nm:
dependency: transitive
description:
@ -853,7 +881,7 @@ packages:
name: oauth2
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
octo_image:
dependency: transitive
description:
@ -867,7 +895,7 @@ packages:
name: package_config
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.1.0"
package_info_plus:
dependency: "direct main"
description:
@ -902,7 +930,7 @@ packages:
name: package_info_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
version: "1.0.6"
package_info_plus_windows:
dependency: transitive
description:
@ -916,7 +944,7 @@ packages:
name: palette_generator
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.3"
version: "0.3.3+2"
path:
dependency: "direct main"
description:
@ -944,21 +972,21 @@ packages:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
version: "2.0.12"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.14"
path_provider_ios:
version: "2.0.22"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_ios
name: path_provider_foundation
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.1.1"
path_provider_linux:
dependency: transitive
description:
@ -966,20 +994,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.7"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "2.0.5"
path_provider_windows:
dependency: transitive
description:
@ -1035,7 +1056,7 @@ packages:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0"
version: "5.1.0"
platform:
dependency: transitive
description:
@ -1058,21 +1079,28 @@ packages:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
version: "2.1.3"
pointycastle:
dependency: transitive
description:
name: pointycastle
url: "https://pub.dartlang.org"
source: hosted
version: "3.6.2"
pool:
dependency: transitive
description:
name: pool
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.0"
version: "1.5.1"
popover:
dependency: "direct main"
description:
name: popover
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.6+3"
version: "0.2.8"
popover_gtk:
dependency: transitive
description:
@ -1093,28 +1121,28 @@ packages:
name: pub_semver
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.3"
pubspec_parse:
dependency: transitive
description:
name: pubspec_parse
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.2.1"
puppeteer:
dependency: transitive
description:
name: puppeteer
url: "https://pub.dartlang.org"
source: hosted
version: "2.15.0"
version: "2.22.0"
queue:
dependency: "direct main"
description:
name: queue
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0+1"
version: "3.1.0+2"
recase:
dependency: transitive
description:
@ -1128,14 +1156,14 @@ packages:
name: riverpod
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.3"
rxdart:
dependency: transitive
description:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.27.3"
version: "0.27.7"
screen_retriever:
dependency: transitive
description:
@ -1163,42 +1191,35 @@ packages:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.15"
version: "2.0.17"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.12"
shared_preferences_ios:
version: "2.0.15"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_ios
name: shared_preferences_foundation
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.2"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
version: "2.1.3"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.0"
shared_preferences_web:
dependency: transitive
description:
@ -1212,7 +1233,7 @@ packages:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.3"
shelf:
dependency: transitive
description:
@ -1280,14 +1301,14 @@ packages:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2+1"
version: "2.2.4+1"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1+1"
version: "2.4.2+2"
stack_trace:
dependency: transitive
description:
@ -1315,7 +1336,7 @@ packages:
name: stream_transform
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.0"
string_scanner:
dependency: transitive
description:
@ -1329,7 +1350,7 @@ packages:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0+2"
version: "3.0.1"
term_glyph:
dependency: transitive
description:
@ -1344,13 +1365,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.12"
time:
dependency: transitive
description:
name: time
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
timing:
dependency: transitive
description:
name: timing
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.1"
tuple:
dependency: "direct main"
description:
@ -1371,56 +1399,56 @@ packages:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.7"
version: "6.1.8"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.17"
version: "6.0.23"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.17"
version: "6.0.18"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
version: "2.0.14"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.3"
uuid:
dependency: "direct main"
description:
@ -1455,21 +1483,21 @@ packages:
name: watcher
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
version: "2.3.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.1.3"
window_manager:
dependency: "direct main"
description:
@ -1492,7 +1520,7 @@ packages:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0+1"
version: "0.2.0+3"
xml:
dependency: transitive
description:
@ -1513,7 +1541,7 @@ packages:
name: youtube_explode_dart
url: "https://pub.dartlang.org"
source: hosted
version: "1.12.1"
version: "1.12.3"
sdks:
dart: ">=2.18.0 <3.0.0"
flutter: ">=3.3.0"

View File

@ -58,7 +58,7 @@ dependencies:
git:
url: https://github.com/KRTirtho/platform_ui.git
ref: 073cefb9c419fcb01cbdfd6ca2f9714eec23c83b
fluent_ui: ^4.0.3
fluent_ui: 4.0.3
macos_ui: ^1.7.5
libadwaita: ^1.2.5
adwaita: ^0.5.2
@ -81,6 +81,7 @@ dev_dependencies:
hive_generator: ^2.0.0
build_runner: ^2.3.2
flutter_distributor: ^0.0.2
flutter_gen_runner: ^5.1.0+1
flutter:
uses-material-design: true
@ -100,3 +101,8 @@ flutter_icons:
macos:
generate: true
image_path: "assets/spotube-logo.png"
flutter_gen:
output: lib/collections
integrations:
flutter_svg: true