diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 3e3ee30..9ec7edd 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -40,7 +40,7 @@ template: | **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION exclude-labels: - - "skip changelog" + - "skip-changelog" exclude-contributors: - "Dr-Blank" @@ -55,15 +55,15 @@ autolabeler: branch: - '/feature\/.+/' title: - - "/^feat(ure)?/i" + - "/feat(ure)?/i" body: - "/JIRA-[0-9]{1,4}/" - label: "chore" title: - - "/^chore\b/i" + - "/chore/i" - label: "ui" title: - "/^ui\b/i" - label: "refactor" title: - - "/^refactor/i" + - "/refactor/i" diff --git a/.github/workflows/flutter-ci.yaml b/.github/workflows/flutter-ci.yaml index 1404451..eb9d9eb 100644 --- a/.github/workflows/flutter-ci.yaml +++ b/.github/workflows/flutter-ci.yaml @@ -48,10 +48,6 @@ jobs: # - name: Run static analysis # run: flutter analyze - - name: Check formatting - run: | - dart format -o none --set-exit-if-changed lib/ - - name: Run tests run: flutter test diff --git a/lib/constants/hero_tag_conventions.dart b/lib/constants/hero_tag_conventions.dart index 4ec40a9..6934c00 100644 --- a/lib/constants/hero_tag_conventions.dart +++ b/lib/constants/hero_tag_conventions.dart @@ -10,4 +10,5 @@ class HeroTagPrefixes { static const String bookTitle = 'book_title_'; static const String narratorName = 'narrator_name_'; static const String libraryItemPlayButton = 'library_item_play_button_'; + } diff --git a/lib/features/explore/view/explore_page.dart b/lib/features/explore/view/explore_page.dart index 23bb0f6..2a46983 100644 --- a/lib/features/explore/view/explore_page.dart +++ b/lib/features/explore/view/explore_page.dart @@ -98,10 +98,8 @@ class MySearchBar extends HookConsumerWidget { // opacity: 0.5 for the hint text hintStyle: WidgetStatePropertyAll( Theme.of(context).textTheme.bodyMedium!.copyWith( - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.5), + color: + Theme.of(context).colorScheme.onSurface.withOpacity(0.5), ), ), textInputAction: TextInputAction.search, diff --git a/lib/features/item_viewer/view/library_item_hero_section.dart b/lib/features/item_viewer/view/library_item_hero_section.dart index da4adea..45edc02 100644 --- a/lib/features/item_viewer/view/library_item_hero_section.dart +++ b/lib/features/item_viewer/view/library_item_hero_section.dart @@ -199,10 +199,8 @@ class _LibraryItemProgressIndicator extends HookConsumerWidget { '${remainingTime.smartBinaryFormat} left', style: Theme.of(context).textTheme.bodySmall?.copyWith( - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.75), + color: + Theme.of(context).colorScheme.onSurface.withOpacity(0.75), ), ), ], @@ -229,7 +227,7 @@ class _HeroSectionSubLabelWithIcon extends HookConsumerWidget { ref.watch(appSettingsProvider).themeSettings.useMaterialThemeOnItemPage; final color = useMaterialThemeOnItemPage ? themeData.colorScheme.primary - : themeData.colorScheme.onSurface.withValues(alpha: 0.75); + : themeData.colorScheme.onSurface.withOpacity(0.75); return Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Row( @@ -445,7 +443,7 @@ class _BookTitle extends StatelessWidget { ? const SizedBox.shrink() : Text( style: themeData.textTheme.titleSmall?.copyWith( - color: themeData.colorScheme.onSurface.withValues(alpha: 0.8), + color: themeData.colorScheme.onSurface.withOpacity(0.8), ), itemBookMetadata?.subtitle ?? '', ), diff --git a/lib/features/item_viewer/view/library_item_metadata.dart b/lib/features/item_viewer/view/library_item_metadata.dart index 664daac..b08948e 100644 --- a/lib/features/item_viewer/view/library_item_metadata.dart +++ b/lib/features/item_viewer/view/library_item_metadata.dart @@ -96,10 +96,7 @@ class LibraryItemMetadata extends HookConsumerWidget { return VerticalDivider( indent: 6, endIndent: 6, - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.6), + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.6), ); }, ), @@ -128,7 +125,7 @@ class _MetadataItem extends StatelessWidget { children: [ Text( style: themeData.textTheme.titleMedium?.copyWith( - color: themeData.colorScheme.onSurface.withValues(alpha: 0.90), + color: themeData.colorScheme.onSurface.withOpacity(0.90), ), value, maxLines: 1, @@ -136,7 +133,7 @@ class _MetadataItem extends StatelessWidget { ), Text( style: themeData.textTheme.bodySmall?.copyWith( - color: themeData.colorScheme.onSurface.withValues(alpha: 0.7), + color: themeData.colorScheme.onSurface.withOpacity(0.7), ), title, maxLines: 1, diff --git a/lib/features/onboarding/view/onboarding_single_page.dart b/lib/features/onboarding/view/onboarding_single_page.dart index 7f071a0..bd69fb0 100644 --- a/lib/features/onboarding/view/onboarding_single_page.dart +++ b/lib/features/onboarding/view/onboarding_single_page.dart @@ -13,37 +13,6 @@ class OnboardingSinglePage extends HookConsumerWidget { super.key, }); - @override - Widget build(BuildContext context, WidgetRef ref) { - return Scaffold( - body: LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) { - return Center( - child: SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - maxWidth: 600, - minWidth: - constraints.maxWidth < 600 ? constraints.maxWidth : 0, - ), - child: const Padding( - padding: EdgeInsets.symmetric(vertical: 20.0), - child: SafeArea(child: OnboardingBody()), - ), - ), - ), - ); - }, - ), - ); - } -} - -class OnboardingBody extends HookConsumerWidget { - const OnboardingBody({ - super.key, - }); - @override Widget build(BuildContext context, WidgetRef ref) { final apiSettings = ref.watch(apiSettingsProvider); @@ -70,65 +39,65 @@ class OnboardingBody extends HookConsumerWidget { ); } - return Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - 'Welcome to Vaani', - style: Theme.of(context).textTheme.headlineSmall, - ), + return Scaffold( + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Welcome to Vaani', + style: Theme.of(context).textTheme.headlineSmall, + ), + ), + const SizedBox.square( + dimension: 16.0, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: AnimatedSwitcher( + duration: 500.ms, + transitionBuilder: fadeSlideTransitionBuilder, + child: canUserLogin.value + ? Text( + 'Server connected, please login', + key: const ValueKey('connected'), + style: Theme.of(context).textTheme.bodyMedium, + ) + : Text( + 'Please enter the URL of your AudiobookShelf Server', + key: const ValueKey('not_connected'), + style: Theme.of(context).textTheme.bodyMedium, + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: AddNewServer( + controller: serverUriController, + allowEmpty: true, + onPressed: () { + canUserLogin.value = serverUriController.text.isNotEmpty; + }, + ), + ), + AnimatedSwitcher( + duration: 500.ms, + transitionBuilder: fadeSlideTransitionBuilder, + child: canUserLogin.value + ? UserLoginWidget( + server: audiobookshelfUri, + ) + // ).animate().fade(duration: 600.ms).slideY(begin: 0.3, end: 0) + : const RedirectToABS().animate().fadeIn().slideY( + curve: Curves.easeInOut, + duration: 500.ms, + ), + ), + ], ), - const SizedBox.square( - dimension: 16.0, - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: AnimatedSwitcher( - duration: 500.ms, - transitionBuilder: fadeSlideTransitionBuilder, - child: canUserLogin.value - ? Text( - 'Server connected, please login', - key: const ValueKey('connected'), - style: Theme.of(context).textTheme.bodyMedium, - ) - : Text( - 'Please enter the URL of your AudiobookShelf Server', - key: const ValueKey('not_connected'), - style: Theme.of(context).textTheme.bodyMedium, - ), - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: AddNewServer( - controller: serverUriController, - allowEmpty: true, - onPressed: () { - canUserLogin.value = serverUriController.text.isNotEmpty; - }, - ), - ), - const SizedBox.square( - dimension: 16.0, - ), - AnimatedSwitcher( - duration: 500.ms, - transitionBuilder: fadeSlideTransitionBuilder, - child: canUserLogin.value - ? UserLoginWidget( - server: audiobookshelfUri, - ) - // ).animate().fade(duration: 600.ms).slideY(begin: 0.3, end: 0) - : const RedirectToABS().animate().fadeIn().slideY( - curve: Curves.easeInOut, - duration: 500.ms, - ), - ), - ], + ), ); } } diff --git a/lib/features/onboarding/view/user_login.dart b/lib/features/onboarding/view/user_login.dart index bf65b12..2b3d575 100644 --- a/lib/features/onboarding/view/user_login.dart +++ b/lib/features/onboarding/view/user_login.dart @@ -130,11 +130,11 @@ class UserLoginMultipleAuth extends HookConsumerWidget { return Center( child: InactiveFocusScopeObserver( child: AutofillGroup( - child: Column( - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Wrap( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + Wrap( // mainAxisAlignment: MainAxisAlignment.center, spacing: 10, runAlignment: WrapAlignment.center, @@ -174,10 +174,10 @@ class UserLoginMultipleAuth extends HookConsumerWidget { ), ], ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: switch (methodChoice.value) { + const SizedBox.square( + dimension: 8, + ), + switch (methodChoice.value) { AuthMethodChoice.authToken => UserLoginWithToken( server: server, addServer: addServer, @@ -192,8 +192,8 @@ class UserLoginMultipleAuth extends HookConsumerWidget { openIDButtonText: openIDButtonText, ), }, - ), - ], + ], + ), ), ), ), diff --git a/lib/features/onboarding/view/user_login_with_password.dart b/lib/features/onboarding/view/user_login_with_password.dart index b730cc5..7628959 100644 --- a/lib/features/onboarding/view/user_login_with_password.dart +++ b/lib/features/onboarding/view/user_login_with_password.dart @@ -29,7 +29,6 @@ class UserLoginWithPassword extends HookConsumerWidget { final usernameController = useTextEditingController(); final passwordController = useTextEditingController(); final isPasswordVisibleAnimationController = useAnimationController( - initialValue: 1, duration: const Duration(milliseconds: 500), ); @@ -93,76 +92,76 @@ class UserLoginWithPassword extends HookConsumerWidget { return Center( child: InactiveFocusScopeObserver( child: AutofillGroup( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextFormField( - controller: usernameController, - autofocus: true, - autofillHints: const [AutofillHints.username], - textInputAction: TextInputAction.next, - decoration: InputDecoration( - labelText: 'Username', - labelStyle: TextStyle( - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.8), - ), - border: const OutlineInputBorder(), - ), - ), - const SizedBox(height: 10), - TextFormField( - controller: passwordController, - autofillHints: const [AutofillHints.password], - textInputAction: TextInputAction.done, - obscureText: !isPasswordVisible.value, - onFieldSubmitted: (_) { - loginAndSave(); - }, - decoration: InputDecoration( - labelText: 'Password', - labelStyle: TextStyle( - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.8), - ), - border: const OutlineInputBorder(), - suffixIcon: ColorFiltered( - colorFilter: ColorFilter.mode( - Theme.of(context) + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextFormField( + controller: usernameController, + autofocus: true, + autofillHints: const [AutofillHints.username], + textInputAction: TextInputAction.next, + decoration: InputDecoration( + labelText: 'Username', + labelStyle: TextStyle( + color: Theme.of(context) .colorScheme - .primary - .withValues(alpha: 0.8), - BlendMode.srcIn, + .onSurface + .withOpacity(0.8), ), - child: InkWell( - borderRadius: BorderRadius.circular(50), - onTap: () { - isPasswordVisible.value = !isPasswordVisible.value; - }, - child: Container( - margin: const EdgeInsets.only(left: 8, right: 8), - child: Lottie.asset( - 'assets/animations/Animation - 1714930099660.json', - controller: isPasswordVisibleAnimationController, + border: const OutlineInputBorder(), + ), + ), + const SizedBox(height: 10), + TextFormField( + controller: passwordController, + autofillHints: const [AutofillHints.password], + textInputAction: TextInputAction.done, + obscureText: !isPasswordVisible.value, + onFieldSubmitted: (_) { + loginAndSave(); + }, + decoration: InputDecoration( + labelText: 'Password', + labelStyle: TextStyle( + color: Theme.of(context) + .colorScheme + .onSurface + .withOpacity(0.8), + ), + border: const OutlineInputBorder(), + suffixIcon: ColorFiltered( + colorFilter: ColorFilter.mode( + Theme.of(context).colorScheme.primary.withOpacity(0.8), + BlendMode.srcIn, + ), + child: InkWell( + borderRadius: BorderRadius.circular(50), + onTap: () { + isPasswordVisible.value = !isPasswordVisible.value; + }, + child: Container( + margin: const EdgeInsets.only(left: 8, right: 8), + child: Lottie.asset( + 'assets/animations/Animation - 1714930099660.json', + controller: isPasswordVisibleAnimationController, + ), ), ), ), - ), - suffixIconConstraints: const BoxConstraints( - maxHeight: 45, + suffixIconConstraints: const BoxConstraints( + maxHeight: 45, + ), ), ), - ), - const SizedBox(height: 30), - ElevatedButton( - onPressed: loginAndSave, - child: const Text('Login'), - ), - ], + const SizedBox(height: 30), + ElevatedButton( + onPressed: loginAndSave, + child: const Text('Login'), + ), + ], + ), ), ), ), diff --git a/lib/features/onboarding/view/user_login_with_token.dart b/lib/features/onboarding/view/user_login_with_token.dart index a67b96b..35cdf55 100644 --- a/lib/features/onboarding/view/user_login_with_token.dart +++ b/lib/features/onboarding/view/user_login_with_token.dart @@ -84,10 +84,7 @@ class UserLoginWithToken extends HookConsumerWidget { decoration: InputDecoration( labelText: 'API Token', labelStyle: TextStyle( - color: Theme.of(context) - .colorScheme - .onSurface - .withValues(alpha: 0.8), + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.8), ), border: const OutlineInputBorder(), ), diff --git a/lib/features/player/view/player_when_expanded.dart b/lib/features/player/view/player_when_expanded.dart index 0deda52..5fe0ea7 100644 --- a/lib/features/player/view/player_when_expanded.dart +++ b/lib/features/player/view/player_when_expanded.dart @@ -104,10 +104,8 @@ class PlayerWhenExpanded extends HookConsumerWidget { decoration: BoxDecoration( boxShadow: [ BoxShadow( - color: Theme.of(context) - .colorScheme - .primary - .withValues(alpha: 0.1), + color: + Theme.of(context).colorScheme.primary.withOpacity(0.1), blurRadius: 32 * earlyPercentage, spreadRadius: 8 * earlyPercentage, // offset: Offset(0, 16 * earlyPercentage), @@ -173,7 +171,7 @@ class PlayerWhenExpanded extends HookConsumerWidget { color: Theme.of(context) .colorScheme .onSurface - .withValues(alpha: 0.7), + .withOpacity(0.7), ), maxLines: 1, overflow: TextOverflow.ellipsis, diff --git a/lib/features/player/view/player_when_minimized.dart b/lib/features/player/view/player_when_minimized.dart index 1a5774b..435a6de 100644 --- a/lib/features/player/view/player_when_minimized.dart +++ b/lib/features/player/view/player_when_minimized.dart @@ -93,7 +93,7 @@ class PlayerWhenMinimized extends HookConsumerWidget { color: Theme.of(context) .colorScheme .onSurface - .withValues(alpha: 0.7), + .withOpacity(0.7), ), ), ], diff --git a/lib/features/player/view/widgets/speed_selector.dart b/lib/features/player/view/widgets/speed_selector.dart index ab564b1..65a3bfa 100644 --- a/lib/features/player/view/widgets/speed_selector.dart +++ b/lib/features/player/view/widgets/speed_selector.dart @@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:list_wheel_scroll_view_nls/list_wheel_scroll_view_nls.dart'; import 'package:vaani/features/player/providers/audiobook_player.dart'; import 'package:vaani/settings/app_settings_provider.dart'; +import 'package:vaani/shared/hooks.dart'; const double itemExtent = 25; diff --git a/lib/features/sleep_timer/view/sleep_timer_button.dart b/lib/features/sleep_timer/view/sleep_timer_button.dart index 9712813..075b0e4 100644 --- a/lib/features/sleep_timer/view/sleep_timer_button.dart +++ b/lib/features/sleep_timer/view/sleep_timer_button.dart @@ -11,6 +11,7 @@ import 'package:vaani/features/sleep_timer/providers/sleep_timer_provider.dart' import 'package:vaani/main.dart'; import 'package:vaani/settings/app_settings_provider.dart'; import 'package:vaani/shared/extensions/duration_format.dart'; +import 'package:vaani/shared/hooks.dart'; class SleepTimerButton extends HookConsumerWidget { const SleepTimerButton({ diff --git a/lib/features/you/view/server_manager.dart b/lib/features/you/view/server_manager.dart index f44eb77..43c8d24 100644 --- a/lib/features/you/view/server_manager.dart +++ b/lib/features/you/view/server_manager.dart @@ -261,7 +261,9 @@ class ServerManagerPage extends HookConsumerWidget { }, ), ), + MiniPlayerBottomPadding(), + ], ), ), diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 682a8a4..4ff81c4 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -76,7 +76,7 @@ class HomePage extends HookConsumerWidget { child: ListView.separated( itemBuilder: (context, index) => shelvesToDisplay[index], separatorBuilder: (context, index) => Divider( - color: Theme.of(context).dividerColor.withValues(alpha: 0.1), + color: Theme.of(context).dividerColor.withOpacity(0.1), indent: 16, endIndent: 16, ), diff --git a/lib/pages/library_page.dart b/lib/pages/library_page.dart index a6950a6..18eedee 100644 --- a/lib/pages/library_page.dart +++ b/lib/pages/library_page.dart @@ -61,7 +61,7 @@ class LibraryPage extends HookConsumerWidget { child: ListView.separated( itemBuilder: (context, index) => shelvesToDisplay[index], separatorBuilder: (context, index) => Divider( - color: Theme.of(context).dividerColor.withValues(alpha: 0.1), + color: Theme.of(context).dividerColor.withOpacity(0.1), indent: 16, endIndent: 16, ), diff --git a/lib/router/models/library_item_extras.dart b/lib/router/models/library_item_extras.dart index 55b734e..0d50040 100644 --- a/lib/router/models/library_item_extras.dart +++ b/lib/router/models/library_item_extras.dart @@ -16,4 +16,5 @@ class LibraryItemExtras with _$LibraryItemExtras { BookMinified? book, @Default('') String heroTagSuffix, }) = _LibraryItemExtras; + } diff --git a/lib/settings/constants.dart b/lib/settings/constants.dart index 3b836d3..9ab7b55 100644 --- a/lib/settings/constants.dart +++ b/lib/settings/constants.dart @@ -1,5 +1,6 @@ import 'package:flutter/foundation.dart' show immutable; + @immutable class AppMetadata { const AppMetadata._(); diff --git a/lib/settings/view/widgets/navigation_with_switch_tile.dart b/lib/settings/view/widgets/navigation_with_switch_tile.dart index 8851fa1..dbc8ecf 100644 --- a/lib/settings/view/widgets/navigation_with_switch_tile.dart +++ b/lib/settings/view/widgets/navigation_with_switch_tile.dart @@ -40,7 +40,7 @@ class NavigationWithSwitchTile extends AbstractSettingsTile { child: Row( children: [ VerticalDivider( - color: Theme.of(context).dividerColor.withValues(alpha: 0.5), + color: Theme.of(context).dividerColor.withOpacity(0.5), indent: 8.0, endIndent: 8.0, ), diff --git a/lib/shared/utils.dart b/lib/shared/utils.dart index 3d600b4..6fce1a0 100644 --- a/lib/shared/utils.dart +++ b/lib/shared/utils.dart @@ -1,3 +1,4 @@ + import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/lib/shared/widgets/add_new_server.dart b/lib/shared/widgets/add_new_server.dart index 8c31fc1..a0c10e6 100644 --- a/lib/shared/widgets/add_new_server.dart +++ b/lib/shared/widgets/add_new_server.dart @@ -68,7 +68,7 @@ class AddNewServer extends HookConsumerWidget { decoration: InputDecoration( labelText: 'Server URI', labelStyle: TextStyle( - color: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.8), + color: Theme.of(context).colorScheme.onSurface.withOpacity(0.8), ), border: const OutlineInputBorder(), prefixText: diff --git a/lib/shared/widgets/drawer.dart b/lib/shared/widgets/drawer.dart index 12aa1c2..be224e9 100644 --- a/lib/shared/widgets/drawer.dart +++ b/lib/shared/widgets/drawer.dart @@ -3,6 +3,7 @@ import 'package:go_router/go_router.dart'; import 'package:vaani/features/you/view/server_manager.dart'; import 'package:vaani/router/router.dart'; + class MyDrawer extends StatelessWidget { const MyDrawer({ super.key, diff --git a/lib/shared/widgets/expandable_description.dart b/lib/shared/widgets/expandable_description.dart index 203c7b0..06605e4 100644 --- a/lib/shared/widgets/expandable_description.dart +++ b/lib/shared/widgets/expandable_description.dart @@ -39,7 +39,7 @@ class ExpandableDescription extends HookWidget { // header with carrot icon is tapable InkWell( borderRadius: BorderRadius.circular(8), - + onTap: () { isDescExpanded.value = !isDescExpanded.value; if (isDescExpanded.value) { diff --git a/lib/shared/widgets/shelves/book_shelf.dart b/lib/shared/widgets/shelves/book_shelf.dart index 4490b99..1ef7089 100644 --- a/lib/shared/widgets/shelves/book_shelf.dart +++ b/lib/shared/widgets/shelves/book_shelf.dart @@ -255,10 +255,8 @@ class _BookOnShelfPlayButton extends HookConsumerWidget { child: CircularProgressIndicator( value: userProgress.progress, strokeWidth: strokeWidth, - backgroundColor: Theme.of(context) - .colorScheme - .onPrimary - .withValues(alpha: 0.8), + backgroundColor: + Theme.of(context).colorScheme.onPrimary.withOpacity(0.8), valueColor: AlwaysStoppedAnimation( Theme.of(context).colorScheme.primary, ), @@ -276,10 +274,7 @@ class _BookOnShelfPlayButton extends HookConsumerWidget { const Size(size, size), ), backgroundColor: WidgetStateProperty.all( - Theme.of(context) - .colorScheme - .onPrimary - .withValues(alpha: 0.9), + Theme.of(context).colorScheme.onPrimary.withOpacity(0.9), ), ), onPressed: () async { @@ -321,10 +316,9 @@ class BookCoverSkeleton extends StatelessWidget { child: SizedBox( width: 150, child: Shimmer.fromColors( - baseColor: - Theme.of(context).colorScheme.surface.withValues(alpha: 0.3), + baseColor: Theme.of(context).colorScheme.surface.withOpacity(0.3), highlightColor: - Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.1), + Theme.of(context).colorScheme.onSurface.withOpacity(0.1), child: Container( color: Theme.of(context).colorScheme.surface, ), diff --git a/pubspec.yaml b/pubspec.yaml index e1f9c4d..e8f6c54 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.0.17+8 +version: 0.0.16+7 environment: sdk: ">=3.3.4 <4.0.0" diff --git a/shelfsdk b/shelfsdk index 5cc545c..ac8e94d 160000 --- a/shelfsdk +++ b/shelfsdk @@ -1 +1 @@ -Subproject commit 5cc545ca87c05615473ab9c363cfa29e341d1e2a +Subproject commit ac8e94df7b28c4334165a11c3b445cd0cc497495