chore: Move to different iconsax library (#301)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2025-04-05 23:36:48 +02:00 committed by GitHub
parent 5b3d5b8900
commit 5578076fdb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
71 changed files with 349 additions and 346 deletions

View file

@ -4,7 +4,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
@ -85,13 +85,13 @@ enum Authentication {
IconData get icon { IconData get icon {
switch (this) { switch (this) {
case Authentication.none: case Authentication.none:
return IconsaxBold.arrow_bottom; return IconsaxPlusBold.arrow_bottom;
case Authentication.autoLogin: case Authentication.autoLogin:
return IconsaxOutline.login_1; return IconsaxPlusLinear.login_1;
case Authentication.biometrics: case Authentication.biometrics:
return IconsaxOutline.finger_scan; return IconsaxPlusLinear.finger_scan;
case Authentication.passcode: case Authentication.passcode:
return IconsaxOutline.password_check; return IconsaxPlusLinear.password_check;
} }
} }

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
@ -31,18 +31,21 @@ extension CollectionTypeExtension on CollectionType {
IconData getIconType(bool outlined) { IconData getIconType(bool outlined) {
switch (this) { switch (this) {
case CollectionType.movies: case CollectionType.movies:
return outlined ? IconsaxOutline.video_horizontal : IconsaxBold.video_horizontal; return outlined ? IconsaxPlusLinear.video_horizontal : IconsaxPlusBold.video_horizontal;
case CollectionType.tvshows: case CollectionType.tvshows:
return outlined ? IconsaxOutline.video_vertical : IconsaxBold.video_vertical; return outlined ? IconsaxPlusLinear.video_vertical : IconsaxPlusBold.video_vertical;
case CollectionType.boxsets: case CollectionType.boxsets:
return outlined ? IconsaxPlusLinear.box : IconsaxPlusBold.box;
case CollectionType.folders: case CollectionType.folders:
return outlined ? IconsaxOutline.folder : IconsaxBold.folder; return outlined ? IconsaxPlusLinear.folder_2 : IconsaxPlusBold.folder_2;
case CollectionType.homevideos: case CollectionType.homevideos:
return outlined ? IconsaxOutline.gallery : IconsaxBold.gallery; return outlined ? IconsaxPlusLinear.gallery : IconsaxPlusBold.gallery;
case CollectionType.books: case CollectionType.books:
return outlined ? IconsaxOutline.book : Icons.book_rounded; return outlined ? IconsaxPlusLinear.book : IconsaxPlusBold.book;
case CollectionType.playlists:
return outlined ? IconsaxPlusLinear.archive : IconsaxPlusBold.archive;
default: default:
return IconsaxOutline.info_circle; return IconsaxPlusLinear.information;
} }
} }
} }

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:dart_mappable/dart_mappable.dart'; import 'package:dart_mappable/dart_mappable.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
@ -72,7 +72,7 @@ class ItemBaseModel with ItemBaseModelMappable {
? Row( ? Row(
children: [ children: [
const Icon( const Icon(
IconsaxBold.star_1, IconsaxPlusBold.star_1,
size: 14, size: 14,
color: Colors.yellowAccent, color: Colors.yellowAccent,
), ),
@ -85,7 +85,7 @@ class ItemBaseModel with ItemBaseModelMappable {
? Row( ? Row(
children: [ children: [
const Icon( const Icon(
IconsaxBold.star_1, IconsaxPlusBold.star_1,
size: 14, size: 14,
color: Colors.yellowAccent, color: Colors.yellowAccent,
), ),
@ -234,72 +234,72 @@ class ItemBaseModel with ItemBaseModelMappable {
// Currently supported types // Currently supported types
enum FladderItemType { enum FladderItemType {
baseType( baseType(
icon: IconsaxOutline.folder_2, icon: IconsaxPlusLinear.folder_2,
selectedicon: IconsaxBold.folder_2, selectedicon: IconsaxPlusBold.folder_2,
), ),
audio( audio(
icon: IconsaxOutline.music, icon: IconsaxPlusLinear.music,
selectedicon: IconsaxBold.music, selectedicon: IconsaxPlusBold.music,
), ),
musicAlbum( musicAlbum(
icon: IconsaxOutline.music, icon: IconsaxPlusLinear.music,
selectedicon: IconsaxBold.music, selectedicon: IconsaxPlusBold.music,
), ),
musicVideo( musicVideo(
icon: IconsaxOutline.music, icon: IconsaxPlusLinear.music,
selectedicon: IconsaxBold.music, selectedicon: IconsaxPlusBold.music,
), ),
collectionFolder( collectionFolder(
icon: IconsaxOutline.music, icon: IconsaxPlusLinear.music,
selectedicon: IconsaxBold.music, selectedicon: IconsaxPlusBold.music,
), ),
video( video(
icon: IconsaxOutline.video, icon: IconsaxPlusLinear.video,
selectedicon: IconsaxBold.video, selectedicon: IconsaxPlusBold.video,
), ),
movie( movie(
icon: IconsaxOutline.video_horizontal, icon: IconsaxPlusLinear.video_horizontal,
selectedicon: IconsaxBold.video_horizontal, selectedicon: IconsaxPlusBold.video_horizontal,
), ),
series( series(
icon: IconsaxOutline.video_vertical, icon: IconsaxPlusLinear.video_vertical,
selectedicon: IconsaxBold.video_vertical, selectedicon: IconsaxPlusBold.video_vertical,
), ),
season( season(
icon: IconsaxOutline.video_vertical, icon: IconsaxPlusLinear.video_vertical,
selectedicon: IconsaxBold.video_vertical, selectedicon: IconsaxPlusBold.video_vertical,
), ),
episode( episode(
icon: IconsaxOutline.video_vertical, icon: IconsaxPlusLinear.video_vertical,
selectedicon: IconsaxBold.video_vertical, selectedicon: IconsaxPlusBold.video_vertical,
), ),
photo( photo(
icon: IconsaxOutline.picture_frame, icon: IconsaxPlusLinear.picture_frame,
selectedicon: IconsaxBold.picture_frame, selectedicon: IconsaxPlusBold.picture_frame,
), ),
person( person(
icon: IconsaxOutline.user, icon: IconsaxPlusLinear.user,
selectedicon: IconsaxBold.user, selectedicon: IconsaxPlusBold.user,
), ),
photoAlbum( photoAlbum(
icon: IconsaxOutline.gallery, icon: IconsaxPlusLinear.gallery,
selectedicon: IconsaxBold.gallery, selectedicon: IconsaxPlusBold.gallery,
), ),
folder( folder(
icon: IconsaxOutline.folder, icon: IconsaxPlusLinear.folder,
selectedicon: IconsaxBold.folder, selectedicon: IconsaxPlusBold.folder,
), ),
boxset( boxset(
icon: IconsaxOutline.bookmark, icon: IconsaxPlusLinear.bookmark,
selectedicon: IconsaxBold.bookmark, selectedicon: IconsaxPlusBold.bookmark,
), ),
playlist( playlist(
icon: IconsaxOutline.archive_book, icon: IconsaxPlusLinear.archive_book,
selectedicon: IconsaxBold.archive_book, selectedicon: IconsaxPlusBold.archive_book,
), ),
book( book(
icon: IconsaxOutline.book, icon: IconsaxPlusLinear.book,
selectedicon: IconsaxBold.book, selectedicon: IconsaxPlusBold.book,
); );
const FladderItemType({required this.icon, required this.selectedicon}); const FladderItemType({required this.icon, required this.selectedicon});

View file

@ -4,7 +4,7 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:background_downloader/background_downloader.dart'; import 'package:background_downloader/background_downloader.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
@ -159,11 +159,11 @@ class SyncedItem with _$SyncedItem {
enum SyncStatus { enum SyncStatus {
complete( complete(
Color.fromARGB(255, 141, 214, 58), Color.fromARGB(255, 141, 214, 58),
IconsaxOutline.tick_circle, IconsaxPlusLinear.tick_circle,
), ),
partially( partially(
Color.fromARGB(255, 221, 135, 23), Color.fromARGB(255, 221, 135, 23),
IconsaxOutline.more_circle, IconsaxPlusLinear.more_circle,
), ),
; ;

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
// ignore_for_file: public_member_api_docs, sort_constructors_first // ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
@ -19,9 +19,9 @@ enum PlaybackType {
transcode; transcode;
IconData get icon => switch (this) { IconData get icon => switch (this) {
PlaybackType.offline => IconsaxOutline.cloud, PlaybackType.offline => IconsaxPlusLinear.cloud,
PlaybackType.directStream => IconsaxOutline.arrow_right_1, PlaybackType.directStream => IconsaxPlusLinear.arrow_right_1,
PlaybackType.transcode => IconsaxOutline.convert, PlaybackType.transcode => IconsaxPlusLinear.convert,
}; };
String get name { String get name {

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:extended_image/extended_image.dart'; import 'package:extended_image/extended_image.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:screen_brightness/screen_brightness.dart'; import 'package:screen_brightness/screen_brightness.dart';
import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:wakelock_plus/wakelock_plus.dart';
@ -239,7 +239,7 @@ class _BookViewerControlsState extends ConsumerState<BookViewerControls> {
: nextChapter != null : nextChapter != null
? () async => await loadNextBook(nextChapter) ? () async => await loadNextBook(nextChapter)
: null, : null,
icon: const Icon(IconsaxOutline.backward), icon: const Icon(IconsaxPlusLinear.backward),
), ),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
@ -280,7 +280,7 @@ class _BookViewerControlsState extends ConsumerState<BookViewerControls> {
: previousChapter != null : previousChapter != null
? () async => await loadNextBook(previousChapter) ? () async => await loadNextBook(previousChapter)
: null, : null,
icon: const Icon(IconsaxOutline.forward), icon: const Icon(IconsaxPlusLinear.forward),
), ),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
@ -296,13 +296,13 @@ class _BookViewerControlsState extends ConsumerState<BookViewerControls> {
child: IconButton( child: IconButton(
onPressed: () => widget.controller onPressed: () => widget.controller
.animateToPage(1, duration: pageAnimDuration, curve: pageAnimCurve), .animateToPage(1, duration: pageAnimDuration, curve: pageAnimCurve),
icon: const Icon(IconsaxOutline.backward)), icon: const Icon(IconsaxPlusLinear.backward)),
), ),
IconButton( IconButton(
onPressed: () { onPressed: () {
showBookViewerSettings(context); showBookViewerSettings(context);
}, },
icon: const Icon(IconsaxOutline.setting_2), icon: const Icon(IconsaxPlusLinear.setting_2),
), ),
IconButton( IconButton(
onPressed: chapters.length > 1 onPressed: chapters.length > 1
@ -317,7 +317,7 @@ class _BookViewerControlsState extends ConsumerState<BookViewerControls> {
); );
} }
: () => fladderSnackbar(context, title: "No other chapters"), : () => fladderSnackbar(context, title: "No other chapters"),
icon: const Icon(IconsaxOutline.bookmark_2), icon: const Icon(IconsaxPlusLinear.bookmark_2),
) )
], ],
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -60,7 +60,7 @@ class _AddToCollectionState extends ConsumerState<AddToCollection> {
), ),
IconButton( IconButton(
onPressed: () => ref.read(provider.notifier).setItems(widget.items), onPressed: () => ref.read(provider.notifier).setItems(widget.items),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
) )
], ],
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/book_model.dart'; import 'package:fladder/models/book_model.dart';
@ -105,16 +105,16 @@ class _BookDetailScreenState extends ConsumerState<BookDetailScreen> {
SelectableIconButton( SelectableIconButton(
onPressed: () async => await details.parentModel?.navigateTo(context), onPressed: () async => await details.parentModel?.navigateTo(context),
selected: false, selected: false,
selectedIcon: IconsaxBold.book, selectedIcon: IconsaxPlusBold.book,
icon: IconsaxOutline.book, icon: IconsaxPlusLinear.book,
), ),
if (details.parentModel != null) if (details.parentModel != null)
SelectableIconButton( SelectableIconButton(
onPressed: () async => await ref.read(userProvider.notifier).setAsFavorite( onPressed: () async => await ref.read(userProvider.notifier).setAsFavorite(
!details.parentModel!.userData.isFavourite, details.parentModel!.id), !details.parentModel!.userData.isFavourite, details.parentModel!.id),
selected: details.parentModel!.userData.isFavourite, selected: details.parentModel!.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
) )
else else
SelectableIconButton( SelectableIconButton(
@ -122,8 +122,8 @@ class _BookDetailScreenState extends ConsumerState<BookDetailScreen> {
.read(userProvider.notifier) .read(userProvider.notifier)
.setAsFavorite(!details.book!.userData.isFavourite, details.book!.id), .setAsFavorite(!details.book!.userData.isFavourite, details.book!.id),
selected: details.book!.userData.isFavourite, selected: details.book!.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
), ),
//This one toggles all books in a collection //This one toggles all books in a collection

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -115,8 +115,8 @@ class _ItemDetailScreenState extends ConsumerState<EpisodeDetailScreen> {
.setAsFavorite(!(episodeDetails.userData.isFavourite), episodeDetails.id); .setAsFavorite(!(episodeDetails.userData.isFavourite), episodeDetails.id);
}, },
selected: episodeDetails.userData.isFavourite, selected: episodeDetails.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
), ),
SelectableIconButton( SelectableIconButton(
onPressed: () async { onPressed: () async {
@ -125,8 +125,8 @@ class _ItemDetailScreenState extends ConsumerState<EpisodeDetailScreen> {
.markAsPlayed(!(episodeDetails.userData.played), episodeDetails.id); .markAsPlayed(!(episodeDetails.userData.played), episodeDetails.id);
}, },
selected: episodeDetails.userData.played, selected: episodeDetails.userData.played,
selectedIcon: IconsaxBold.tick_circle, selectedIcon: IconsaxPlusBold.tick_circle,
icon: IconsaxOutline.tick_circle, icon: IconsaxPlusLinear.tick_circle,
), ),
].addPadding(const EdgeInsets.symmetric(horizontal: 6)), ].addPadding(const EdgeInsets.symmetric(horizontal: 6)),
).padding(padding), ).padding(padding),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -111,16 +111,16 @@ class _ItemDetailScreenState extends ConsumerState<MovieDetailScreen> {
.setAsFavorite(!details.userData.isFavourite, details.id); .setAsFavorite(!details.userData.isFavourite, details.id);
}, },
selected: details.userData.isFavourite, selected: details.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
), ),
SelectableIconButton( SelectableIconButton(
onPressed: () async { onPressed: () async {
await ref.read(userProvider.notifier).markAsPlayed(!details.userData.played, details.id); await ref.read(userProvider.notifier).markAsPlayed(!details.userData.played, details.id);
}, },
selected: details.userData.played, selected: details.userData.played,
selectedIcon: IconsaxBold.tick_circle, selectedIcon: IconsaxPlusBold.tick_circle,
icon: IconsaxOutline.tick_circle, icon: IconsaxPlusLinear.tick_circle,
), ),
], ],
).padding(padding), ).padding(padding),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -83,16 +83,16 @@ class _SeasonDetailScreenState extends ConsumerState<SeasonDetailScreen> {
.read(userProvider.notifier) .read(userProvider.notifier)
.setAsFavorite(!details.userData.isFavourite, details.id), .setAsFavorite(!details.userData.isFavourite, details.id),
selected: details.userData.isFavourite, selected: details.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
), ),
SelectableIconButton( SelectableIconButton(
onPressed: () async => await ref onPressed: () async => await ref
.read(userProvider.notifier) .read(userProvider.notifier)
.markAsPlayed(!details.userData.played, details.id), .markAsPlayed(!details.userData.played, details.id),
selected: details.userData.played, selected: details.userData.played,
selectedIcon: IconsaxBold.tick_circle, selectedIcon: IconsaxPlusBold.tick_circle,
icon: IconsaxOutline.tick_circle, icon: IconsaxPlusLinear.tick_circle,
), ),
], ],
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -112,16 +112,16 @@ class _SeriesDetailScreenState extends ConsumerState<SeriesDetailScreen> {
.setAsFavorite(!details.userData.isFavourite, details.id); .setAsFavorite(!details.userData.isFavourite, details.id);
}, },
selected: details.userData.isFavourite, selected: details.userData.isFavourite,
selectedIcon: IconsaxBold.heart, selectedIcon: IconsaxPlusBold.heart,
icon: IconsaxOutline.heart, icon: IconsaxPlusLinear.heart,
), ),
SelectableIconButton( SelectableIconButton(
onPressed: () async { onPressed: () async {
await ref.read(userProvider.notifier).markAsPlayed(!details.userData.played, details.id); await ref.read(userProvider.notifier).markAsPlayed(!details.userData.played, details.id);
}, },
selected: details.userData.played, selected: details.userData.played,
selectedIcon: IconsaxBold.tick_circle, selectedIcon: IconsaxPlusBold.tick_circle,
icon: IconsaxOutline.tick_circle, icon: IconsaxPlusLinear.tick_circle,
), ),
], ],
).padding(padding), ).padding(padding),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/providers/user_provider.dart'; import 'package:fladder/providers/user_provider.dart';
@ -31,8 +31,8 @@ class HomeScreen extends ConsumerWidget {
case HomeTabs.dashboard: case HomeTabs.dashboard:
return DestinationModel( return DestinationModel(
label: context.localized.navigationDashboard, label: context.localized.navigationDashboard,
icon: const Icon(IconsaxOutline.home), icon: const Icon(IconsaxPlusLinear.home),
selectedIcon: const Icon(IconsaxBold.home), selectedIcon: const Icon(IconsaxPlusBold.home),
route: const DashboardRoute(), route: const DashboardRoute(),
action: () => context.router.navigate(const DashboardRoute()), action: () => context.router.navigate(const DashboardRoute()),
floatingActionButton: AdaptiveFab( floatingActionButton: AdaptiveFab(
@ -40,21 +40,21 @@ class HomeScreen extends ConsumerWidget {
title: context.localized.search, title: context.localized.search,
key: Key(e.name.capitalize()), key: Key(e.name.capitalize()),
onPressed: () => context.router.navigate(LibrarySearchRoute()), onPressed: () => context.router.navigate(LibrarySearchRoute()),
child: const Icon(IconsaxOutline.search_normal_1), child: const Icon(IconsaxPlusLinear.search_normal_1),
), ),
); );
case HomeTabs.favorites: case HomeTabs.favorites:
return DestinationModel( return DestinationModel(
label: context.localized.navigationFavorites, label: context.localized.navigationFavorites,
icon: const Icon(IconsaxOutline.heart), icon: const Icon(IconsaxPlusLinear.heart),
selectedIcon: const Icon(IconsaxBold.heart), selectedIcon: const Icon(IconsaxPlusBold.heart),
route: const FavouritesRoute(), route: const FavouritesRoute(),
floatingActionButton: AdaptiveFab( floatingActionButton: AdaptiveFab(
context: context, context: context,
title: context.localized.filter(0), title: context.localized.filter(0),
key: Key(e.name.capitalize()), key: Key(e.name.capitalize()),
onPressed: () => context.router.navigate(LibrarySearchRoute(favourites: true)), onPressed: () => context.router.navigate(LibrarySearchRoute(favourites: true)),
child: const Icon(IconsaxOutline.heart_search), child: const Icon(IconsaxPlusLinear.heart_search),
), ),
action: () => context.router.navigate(const FavouritesRoute()), action: () => context.router.navigate(const FavouritesRoute()),
); );
@ -62,8 +62,8 @@ class HomeScreen extends ConsumerWidget {
if (canDownload) { if (canDownload) {
return DestinationModel( return DestinationModel(
label: context.localized.navigationSync, label: context.localized.navigationSync,
icon: const Icon(IconsaxOutline.cloud), icon: const Icon(IconsaxPlusLinear.cloud),
selectedIcon: const Icon(IconsaxBold.cloud), selectedIcon: const Icon(IconsaxPlusBold.cloud),
route: SyncedRoute(), route: SyncedRoute(),
action: () => context.router.navigate(SyncedRoute()), action: () => context.router.navigate(SyncedRoute()),
); );

View file

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/boxset_model.dart'; import 'package:fladder/models/boxset_model.dart';
@ -201,7 +201,7 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
); );
}, },
label: Text(context.localized.playLabel), label: Text(context.localized.playLabel),
icon: const Icon(IconsaxBold.play), icon: const Icon(IconsaxPlusBold.play),
), ),
].addInBetween(const SizedBox(height: 10)), ].addInBetween(const SizedBox(height: 10)),
), ),
@ -293,17 +293,17 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
[]; [];
final itemCountWidget = ItemActionButton( final itemCountWidget = ItemActionButton(
label: Text(context.localized.itemCount(librarySearchResults.totalItemCount)), label: Text(context.localized.itemCount(librarySearchResults.totalItemCount)),
icon: const Icon(IconsaxBold.document_1), icon: const Icon(IconsaxPlusBold.document_1),
); );
final refreshAction = ItemActionButton( final refreshAction = ItemActionButton(
label: Text(context.localized.forceRefresh), label: Text(context.localized.forceRefresh),
action: () => refreshKey.currentState?.show(), action: () => refreshKey.currentState?.show(),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
); );
final showSavedFiltersDialogue = ItemActionButton( final showSavedFiltersDialogue = ItemActionButton(
label: Text(context.localized.filter(2)), label: Text(context.localized.filter(2)),
action: () => showSavedFilters(context, librarySearchResults, libraryProvider), action: () => showSavedFilters(context, librarySearchResults, libraryProvider),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
); );
final itemViewAction = ItemActionButton( final itemViewAction = ItemActionButton(
label: Text(context.localized.selectViewType), label: Text(context.localized.selectViewType),
@ -414,7 +414,7 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
isFavorite isFavorite
? librarySearchResults.nestedCurrentItem?.type.selectedicon ? librarySearchResults.nestedCurrentItem?.type.selectedicon
: librarySearchResults.nestedCurrentItem?.type.icon ?? : librarySearchResults.nestedCurrentItem?.type.icon ??
IconsaxOutline.document, IconsaxPlusLinear.document,
color: isFavorite ? Theme.of(context).colorScheme.primary : null, color: isFavorite ? Theme.of(context).colorScheme.primary : null,
), ),
), ),
@ -535,7 +535,7 @@ class _LibrarySearchScreenState extends ConsumerState<LibrarySearchScreen> {
Text(context.localized.fetchingLibrary, style: Theme.of(context).textTheme.titleMedium), Text(context.localized.fetchingLibrary, style: Theme.of(context).textTheme.titleMedium),
IconButton( IconButton(
onPressed: () => libraryProvider.cancelFetch(), onPressed: () => libraryProvider.cancelFetch(),
icon: const Icon(IconsaxOutline.close_square), icon: const Icon(IconsaxPlusLinear.close_square),
) )
].addInBetween(const SizedBox(width: 16)), ].addInBetween(const SizedBox(width: 16)),
), ),
@ -593,7 +593,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.addAsFavorite), label: Text(context.localized.addAsFavorite),
icon: const Icon(IconsaxOutline.heart_add), icon: const Icon(IconsaxPlusLinear.heart_add),
), ),
ItemActionButton( ItemActionButton(
action: () async { action: () async {
@ -601,7 +601,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.removeAsFavorite), label: Text(context.localized.removeAsFavorite),
icon: const Icon(IconsaxOutline.heart_remove), icon: const Icon(IconsaxPlusLinear.heart_remove),
), ),
ItemActionButton( ItemActionButton(
action: () async { action: () async {
@ -609,7 +609,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.markAsWatched), label: Text(context.localized.markAsWatched),
icon: const Icon(IconsaxOutline.eye), icon: const Icon(IconsaxPlusLinear.eye),
), ),
ItemActionButton( ItemActionButton(
action: () async { action: () async {
@ -617,7 +617,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.markAsUnwatched), label: Text(context.localized.markAsUnwatched),
icon: const Icon(IconsaxOutline.eye_slash), icon: const Icon(IconsaxPlusLinear.eye_slash),
), ),
if (librarySearchResults.nestedCurrentItem is BoxSetModel) if (librarySearchResults.nestedCurrentItem is BoxSetModel)
ItemActionButton( ItemActionButton(
@ -631,7 +631,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
BoxDecoration(color: Theme.of(context).colorScheme.onPrimary, borderRadius: BorderRadius.circular(6)), BoxDecoration(color: Theme.of(context).colorScheme.onPrimary, borderRadius: BorderRadius.circular(6)),
child: const Padding( child: const Padding(
padding: EdgeInsets.all(3.0), padding: EdgeInsets.all(3.0),
child: Icon(IconsaxOutline.save_remove, size: 20), child: Icon(IconsaxPlusLinear.save_remove, size: 20),
), ),
)), )),
if (librarySearchResults.nestedCurrentItem is PlaylistModel) if (librarySearchResults.nestedCurrentItem is PlaylistModel)
@ -641,7 +641,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.removeFromPlaylist), label: Text(context.localized.removeFromPlaylist),
icon: const Icon(IconsaxOutline.save_remove), icon: const Icon(IconsaxPlusLinear.save_remove),
), ),
ItemActionButton( ItemActionButton(
action: () async { action: () async {
@ -650,7 +650,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
}, },
label: Text(context.localized.addToCollection), label: Text(context.localized.addToCollection),
icon: const Icon( icon: const Icon(
IconsaxOutline.save_add, IconsaxPlusLinear.save_add,
size: 20, size: 20,
), ),
), ),
@ -660,7 +660,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
if (context.mounted) context.refreshData(); if (context.mounted) context.refreshData();
}, },
label: Text(context.localized.addToPlaylist), label: Text(context.localized.addToPlaylist),
icon: const Icon(IconsaxOutline.save_add), icon: const Icon(IconsaxPlusLinear.save_add),
), ),
]; ];
return NestedBottomAppBar( return NestedBottomAppBar(
@ -688,7 +688,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
), ),
padding: const EdgeInsets.all(6), padding: const EdgeInsets.all(6),
child: Icon( child: Icon(
IconsaxOutline.arrow_up_3, IconsaxPlusLinear.arrow_up_3,
color: Theme.of(context).colorScheme.onPrimaryContainer, color: Theme.of(context).colorScheme.onPrimaryContainer,
), ),
), ),
@ -718,14 +718,14 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
} }
} }
}, },
icon: const Icon(IconsaxOutline.sort), icon: const Icon(IconsaxPlusLinear.sort),
), ),
if (librarySearchResults.hasActiveFilters) ...{ if (librarySearchResults.hasActiveFilters) ...{
const SizedBox(width: 6), const SizedBox(width: 6),
IconButton( IconButton(
tooltip: context.localized.disableFilters, tooltip: context.localized.disableFilters,
onPressed: disableFilters(librarySearchResults, libraryProvider), onPressed: disableFilters(librarySearchResults, libraryProvider),
icon: const Icon(IconsaxOutline.filter_remove), icon: const Icon(IconsaxPlusLinear.filter_remove),
), ),
}, },
}, },
@ -733,7 +733,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
IconButton( IconButton(
onPressed: () => libraryProvider.toggleSelectMode(), onPressed: () => libraryProvider.toggleSelectMode(),
color: librarySearchResults.selecteMode ? Theme.of(context).colorScheme.primary : null, color: librarySearchResults.selecteMode ? Theme.of(context).colorScheme.primary : null,
icon: const Icon(IconsaxOutline.category_2), icon: const Icon(IconsaxPlusLinear.category_2),
), ),
const SizedBox(width: 6), const SizedBox(width: 6),
AnimatedFadeSize( AnimatedFadeSize(
@ -748,7 +748,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
message: context.localized.selectAll, message: context.localized.selectAll,
child: IconButton( child: IconButton(
onPressed: () => libraryProvider.selectAll(true), onPressed: () => libraryProvider.selectAll(true),
icon: const Icon(IconsaxOutline.box_add), icon: const Icon(IconsaxPlusLinear.box_add),
), ),
), ),
const SizedBox(width: 6), const SizedBox(width: 6),
@ -756,7 +756,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
message: context.localized.clearSelection, message: context.localized.clearSelection,
child: IconButton( child: IconButton(
onPressed: () => libraryProvider.selectAll(false), onPressed: () => libraryProvider.selectAll(false),
icon: const Icon(IconsaxOutline.box_remove), icon: const Icon(IconsaxPlusLinear.box_remove),
), ),
), ),
const SizedBox(width: 6), const SizedBox(width: 6),
@ -777,7 +777,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
), ),
); );
}, },
icon: const Icon(IconsaxOutline.more)) icon: const Icon(IconsaxPlusLinear.more))
}, },
], ],
), ),
@ -794,7 +794,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(2.0), padding: const EdgeInsets.all(2.0),
child: Icon( child: Icon(
IconsaxBold.arrow_up_1, IconsaxPlusBold.arrow_up_1,
color: Theme.of(context).colorScheme.onSecondary, color: Theme.of(context).colorScheme.onSecondary,
), ),
), ),
@ -823,7 +823,7 @@ class _LibrarySearchBottomBar extends ConsumerWidget {
: null, : null,
); );
}, },
icon: const Icon(IconsaxOutline.shuffle), icon: const Icon(IconsaxPlusLinear.shuffle),
), ),
], ],
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.enums.swagger.dart';
@ -125,7 +125,7 @@ List<Widget> libraryFilterChips(
FilterChip( FilterChip(
label: Text(context.localized.favorites), label: Text(context.localized.favorites),
avatar: Icon( avatar: Icon(
librarySearchResults.favourites ? IconsaxBold.heart : IconsaxOutline.heart, librarySearchResults.favourites ? IconsaxPlusBold.heart : IconsaxPlusLinear.heart,
color: Theme.of(context).colorScheme.onSurface, color: Theme.of(context).colorScheme.onSurface,
), ),
selected: librarySearchResults.favourites, selected: librarySearchResults.favourites,
@ -146,7 +146,7 @@ List<Widget> libraryFilterChips(
if (librarySearchResults.genres.isNotEmpty) if (librarySearchResults.genres.isNotEmpty)
CategoryChip<String>( CategoryChip<String>(
label: Text(context.localized.genre(librarySearchResults.genres.length)), label: Text(context.localized.genre(librarySearchResults.genres.length)),
activeIcon: IconsaxBold.hierarchy_2, activeIcon: IconsaxPlusBold.hierarchy_2,
items: librarySearchResults.genres, items: librarySearchResults.genres,
labelBuilder: (item) => Text(item), labelBuilder: (item) => Text(item),
onSave: (value) => libraryProvider.setGenres(value), onSave: (value) => libraryProvider.setGenres(value),
@ -156,7 +156,7 @@ List<Widget> libraryFilterChips(
if (librarySearchResults.studios.isNotEmpty) if (librarySearchResults.studios.isNotEmpty)
CategoryChip<Studio>( CategoryChip<Studio>(
label: Text(context.localized.studio(librarySearchResults.studios.length)), label: Text(context.localized.studio(librarySearchResults.studios.length)),
activeIcon: IconsaxBold.airdrop, activeIcon: IconsaxPlusBold.airdrop,
items: librarySearchResults.studios, items: librarySearchResults.studios,
labelBuilder: (item) => Text(item.name), labelBuilder: (item) => Text(item.name),
onSave: (value) => libraryProvider.setStudios(value), onSave: (value) => libraryProvider.setStudios(value),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/library_search/library_search_model.dart'; import 'package:fladder/models/library_search/library_search_model.dart';
@ -80,13 +80,13 @@ class LibrarySavedFiltersDialogue extends ConsumerWidget {
filterProvider.saveFilter(filter.copyWith(isFavourite: !filter.isFavourite)), filterProvider.saveFilter(filter.copyWith(isFavourite: !filter.isFavourite)),
icon: Icon( icon: Icon(
color: filter.isFavourite ? Colors.yellowAccent : null, color: filter.isFavourite ? Colors.yellowAccent : null,
filter.isFavourite ? IconsaxBold.star_1 : IconsaxOutline.star, filter.isFavourite ? IconsaxPlusBold.star_1 : IconsaxPlusLinear.star,
), ),
), ),
IconButton.filledTonal( IconButton.filledTonal(
tooltip: context.localized.updateFilterForLibrary, tooltip: context.localized.updateFilterForLibrary,
onPressed: () => provider.updateFilter(filter), onPressed: () => provider.updateFilter(filter),
icon: const Icon(IconsaxBold.refresh), icon: const Icon(IconsaxPlusBold.refresh),
), ),
IconButton.filledTonal( IconButton.filledTonal(
tooltip: context.localized.delete, tooltip: context.localized.delete,
@ -114,7 +114,7 @@ class LibrarySavedFiltersDialogue extends ConsumerWidget {
foregroundColor: foregroundColor:
WidgetStatePropertyAll(Theme.of(context).colorScheme.onErrorContainer), WidgetStatePropertyAll(Theme.of(context).colorScheme.onErrorContainer),
), ),
icon: const Icon(IconsaxOutline.trash), icon: const Icon(IconsaxPlusLinear.trash),
), ),
].addInBetween(const SizedBox(width: 8)), ].addInBetween(const SizedBox(width: 8)),
), ),
@ -142,7 +142,7 @@ class LibrarySavedFiltersDialogue extends ConsumerWidget {
const SizedBox(width: 6), const SizedBox(width: 6),
FilledButton.tonal( FilledButton.tonal(
onPressed: () => provider.saveFiltersNew(controller.text), onPressed: () => provider.saveFiltersNew(controller.text),
child: const Icon(IconsaxOutline.save_2), child: const Icon(IconsaxPlusLinear.save_2),
), ),
], ],
) )

View file

@ -1,7 +1,7 @@
import 'dart:ui'; import 'dart:ui';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/models/boxset_model.dart'; import 'package:fladder/models/boxset_model.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/items/photos_model.dart'; import 'package:fladder/models/items/photos_model.dart';
@ -32,9 +32,9 @@ final libraryViewTypeProvider = StateProvider<LibraryViewTypes>((ref) {
}); });
enum LibraryViewTypes { enum LibraryViewTypes {
grid(icon: IconsaxOutline.grid_2), grid(icon: IconsaxPlusLinear.grid_2),
list(icon: IconsaxOutline.grid_6), list(icon: IconsaxPlusLinear.grid_6),
masonry(icon: IconsaxOutline.grid_3); masonry(icon: IconsaxPlusLinear.grid_3);
const LibraryViewTypes({required this.icon}); const LibraryViewTypes({required this.icon});
@ -81,7 +81,7 @@ class LibraryViews extends ConsumerWidget {
if (ref.watch(librarySearchProvider(key!).select((value) => value.nestedCurrentItem is BoxSetModel))) ...{ if (ref.watch(librarySearchProvider(key!).select((value) => value.nestedCurrentItem is BoxSetModel))) ...{
ItemActionButton( ItemActionButton(
label: Text(context.localized.removeFromCollection), label: Text(context.localized.removeFromCollection),
icon: const Icon(IconsaxOutline.archive_slash), icon: const Icon(IconsaxPlusLinear.archive_slash),
action: () async { action: () async {
await libraryProvider.removeFromCollection(items: [item]); await libraryProvider.removeFromCollection(items: [item]);
if (context.mounted) { if (context.mounted) {
@ -93,7 +93,7 @@ class LibraryViews extends ConsumerWidget {
if (ref.watch(librarySearchProvider(key!).select((value) => value.nestedCurrentItem is PlaylistModel))) ...{ if (ref.watch(librarySearchProvider(key!).select((value) => value.nestedCurrentItem is PlaylistModel))) ...{
ItemActionButton( ItemActionButton(
label: Text(context.localized.removeFromPlaylist), label: Text(context.localized.removeFromPlaylist),
icon: const Icon(IconsaxOutline.archive_minus), icon: const Icon(IconsaxPlusLinear.archive_minus),
action: () async { action: () async {
await libraryProvider.removeFromPlaylist(items: [item]); await libraryProvider.removeFromPlaylist(items: [item]);
if (context.mounted) { if (context.mounted) {

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:page_transition/page_transition.dart'; import 'package:page_transition/page_transition.dart';
@ -98,7 +98,7 @@ class _SearchBarState extends ConsumerState<SuggestionSearchBar> {
}, },
decoration: InputDecoration( decoration: InputDecoration(
hintText: widget.title ?? "${context.localized.search}...", hintText: widget.title ?? "${context.localized.search}...",
prefixIcon: const Icon(IconsaxOutline.search_normal), prefixIcon: const Icon(IconsaxPlusLinear.search_normal),
contentPadding: const EdgeInsets.only(top: 13), contentPadding: const EdgeInsets.only(top: 13),
suffixIcon: controller.text.isNotEmpty suffixIcon: controller.text.isNotEmpty
? IconButton( ? IconButton(

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/account_model.dart'; import 'package:fladder/models/account_model.dart';
@ -107,7 +107,7 @@ class _LockScreenState extends ConsumerState<LockScreen> with WidgetsBindingObse
ref.read(lockScreenActiveProvider.notifier).update((state) => false); ref.read(lockScreenActiveProvider.notifier).update((state) => false);
context.router.push(const LoginRoute()); context.router.push(const LoginRoute());
}, },
child: const Icon(IconsaxOutline.arrow_swap_horizontal), child: const Icon(IconsaxPlusLinear.arrow_swap_horizontal),
), ),
body: Center( body: Center(
child: Wrap( child: Wrap(
@ -117,7 +117,7 @@ class _LockScreenState extends ConsumerState<LockScreen> with WidgetsBindingObse
direction: Axis.vertical, direction: Axis.vertical,
children: [ children: [
const Icon( const Icon(
IconsaxOutline.lock_1, IconsaxPlusLinear.lock_1,
size: 38, size: 38,
), ),
if (user != null) if (user != null)

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -59,7 +59,7 @@ class LoginEditUser extends ConsumerWidget {
), ),
Row( Row(
children: [ children: [
const Icon(IconsaxBold.clock), const Icon(IconsaxPlusBold.clock),
const SizedBox(width: 8), const SizedBox(width: 8),
Column( Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,

View file

@ -3,7 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/account_model.dart'; import 'package:fladder/models/account_model.dart';
@ -90,12 +90,12 @@ class _LoginPageState extends ConsumerState<LoginScreen> {
if (!AdaptiveLayout.of(context).isDesktop) if (!AdaptiveLayout.of(context).isDesktop)
FloatingActionButton( FloatingActionButton(
key: const Key("edit_button"), key: const Key("edit_button"),
child: const Icon(IconsaxOutline.edit_2), child: const Icon(IconsaxPlusLinear.edit_2),
onPressed: () => setState(() => editingUsers = !editingUsers), onPressed: () => setState(() => editingUsers = !editingUsers),
), ),
FloatingActionButton( FloatingActionButton(
key: const Key("new_button"), key: const Key("new_button"),
child: const Icon(IconsaxOutline.add_square), child: const Icon(IconsaxPlusLinear.add_square),
onPressed: startAddingNewUser, onPressed: startAddingNewUser,
), ),
].addInBetween(const SizedBox(width: 16)), ].addInBetween(const SizedBox(width: 16)),
@ -287,7 +287,7 @@ class _LoginPageState extends ConsumerState<LoginScreen> {
ref.read(authProvider.notifier).setServer(""); ref.read(authProvider.notifier).setServer("");
}, },
icon: const Icon( icon: const Icon(
IconsaxOutline.arrow_left_2, IconsaxPlusLinear.arrow_left_2,
), ),
), ),
), ),
@ -315,7 +315,7 @@ class _LoginPageState extends ConsumerState<LoginScreen> {
child: IconButton.filled( child: IconButton.filled(
onPressed: () => retrieveListOfUsers(), onPressed: () => retrieveListOfUsers(),
icon: const Icon( icon: const Icon(
IconsaxOutline.refresh, IconsaxPlusLinear.refresh,
), ),
), ),
), ),
@ -381,7 +381,7 @@ class _LoginPageState extends ConsumerState<LoginScreen> {
children: [ children: [
Text(context.localized.login), Text(context.localized.login),
const SizedBox(width: 8), const SizedBox(width: 8),
const Icon(IconsaxBold.send_1), const Icon(IconsaxPlusBold.send_1),
], ],
), ),
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:reorderable_grid/reorderable_grid.dart'; import 'package:reorderable_grid/reorderable_grid.dart';
@ -80,7 +80,7 @@ class LoginUserGrid extends ConsumerWidget {
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
const Icon( const Icon(
IconsaxBold.driver_2, IconsaxPlusBold.driver_2,
size: 14, size: 14,
), ),
const SizedBox(width: 4), const SizedBox(width: 4),
@ -107,7 +107,7 @@ class LoginUserGrid extends ConsumerWidget {
child: const Padding( child: const Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Icon( child: Icon(
IconsaxBold.edit_2, IconsaxPlusBold.edit_2,
size: 14, size: 14,
), ),
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/credentials_model.dart'; import 'package:fladder/models/credentials_model.dart';
@ -46,7 +46,7 @@ class DiscoverServersWidget extends ConsumerWidget {
style: context.textTheme.bodyLarge, style: context.textTheme.bodyLarge,
), ),
const Spacer(), const Spacer(),
const Opacity(opacity: 0.65, child: Icon(IconsaxOutline.bookmark, size: 16)), const Opacity(opacity: 0.65, child: Icon(IconsaxPlusLinear.bookmark, size: 16)),
], ],
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
@ -69,7 +69,7 @@ class DiscoverServersWidget extends ConsumerWidget {
style: context.textTheme.bodyLarge, style: context.textTheme.bodyLarge,
), ),
const Spacer(), const Spacer(),
const Opacity(opacity: 0.65, child: Icon(IconsaxBold.airdrop, size: 16)), const Opacity(opacity: 0.65, child: Icon(IconsaxPlusBold.airdrop, size: 16)),
], ],
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
@ -135,7 +135,7 @@ class _ServerInfoCard extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Icon( child: Icon(
IconsaxBold.driver, IconsaxPlusBold.driver,
color: Theme.of(context).colorScheme.onPrimaryContainer, color: Theme.of(context).colorScheme.onPrimaryContainer,
), ),
), ),
@ -158,7 +158,7 @@ class _ServerInfoCard extends StatelessWidget {
], ],
), ),
), ),
const Icon(IconsaxOutline.edit_2, size: 16) const Icon(IconsaxPlusLinear.edit_2, size: 16)
].addInBetween(const SizedBox(width: 12)), ].addInBetween(const SizedBox(width: 12)),
), ),
), ),

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/providers/edit_item_provider.dart'; import 'package:fladder/providers/edit_item_provider.dart';
@ -103,7 +103,7 @@ class _EditDialogSwitcherState extends ConsumerState<EditDialogSwitcher> with Ti
style: Theme.of(context).textTheme.titleLarge, style: Theme.of(context).textTheme.titleLarge,
), ),
), ),
IconButton(onPressed: () => refreshEditor(), icon: const Icon(IconsaxOutline.refresh)) IconButton(onPressed: () => refreshEditor(), icon: const Icon(IconsaxPlusLinear.refresh))
], ],
), ),
), ),

View file

@ -1,5 +1,5 @@
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/items/item_shared_models.dart'; import 'package:fladder/models/items/item_shared_models.dart';
import 'package:fladder/providers/edit_item_provider.dart'; import 'package:fladder/providers/edit_item_provider.dart';
@ -557,7 +557,7 @@ class _EditGeneralState extends ConsumerState<EditFields> {
.read(editItemProvider.notifier) .read(editItemProvider.notifier)
.updateField(MapEntry(e.key, newDate.toIso8601String())); .updateField(MapEntry(e.key, newDate.toIso8601String()));
}, },
icon: const Icon(IconsaxOutline.calendar_2)) icon: const Icon(IconsaxPlusLinear.calendar_2))
], ],
), ),
DisplayOrder _ => Builder(builder: (context) { DisplayOrder _ => Builder(builder: (context) {

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -67,7 +67,7 @@ class _IdentifyScreenState extends ConsumerState<IdentifyScreen> with TickerProv
const Spacer(), const Spacer(),
IconButton( IconButton(
onPressed: () async => await ref.read(provider.notifier).fetchInformation(), onPressed: () async => await ref.read(provider.notifier).fetchInformation(),
icon: const Icon(IconsaxOutline.refresh)), icon: const Icon(IconsaxPlusLinear.refresh)),
], ],
), ),
TabBar( TabBar(

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/information_model.dart'; import 'package:fladder/models/information_model.dart';
@ -83,7 +83,7 @@ class ItemInfoScreenState extends ConsumerState<ItemInfoScreen> {
const SizedBox(width: 6), const SizedBox(width: 6),
IconButton( IconButton(
onPressed: () => ref.read(provider.notifier).getItemInformation(widget.item), onPressed: () => ref.read(provider.notifier).getItemInformation(widget.item),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
), ),
], ],
), ),

View file

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:extended_image/extended_image.dart'; import 'package:extended_image/extended_image.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
@ -301,13 +301,13 @@ class _PhotoViewerControllsState extends ConsumerState<PhotoViewerControls> with
children: [ children: [
ElevatedIconButton( ElevatedIconButton(
onPressed: widget.openOptions, onPressed: widget.openOptions,
icon: IconsaxOutline.more_2, icon: IconsaxPlusLinear.more_2,
), ),
const Spacer(), const Spacer(),
ElevatedIconButton( ElevatedIconButton(
onPressed: markAsFavourite, onPressed: markAsFavourite,
color: widget.photo.userData.isFavourite ? Colors.red : null, color: widget.photo.userData.isFavourite ? Colors.red : null,
icon: widget.photo.userData.isFavourite ? IconsaxBold.heart : IconsaxOutline.heart, icon: widget.photo.userData.isFavourite ? IconsaxPlusBold.heart : IconsaxPlusLinear.heart,
), ),
ProgressFloatingButton( ProgressFloatingButton(
controller: timerController, controller: timerController,

View file

@ -5,7 +5,7 @@ import 'package:flutter/services.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:extended_image/extended_image.dart'; import 'package:extended_image/extended_image.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_blurhash/flutter_blurhash.dart'; import 'package:flutter_blurhash/flutter_blurhash.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
@ -334,7 +334,7 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
IconButton.styleFrom(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))), IconButton.styleFrom(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))),
onPressed: () => onPressed: () =>
controller.nextPage(duration: const Duration(milliseconds: 125), curve: Curves.easeInOut), controller.nextPage(duration: const Duration(milliseconds: 125), curve: Curves.easeInOut),
icon: const Icon(IconsaxBold.arrow_right_1), icon: const Icon(IconsaxPlusBold.arrow_right_1),
), ),
), ),
), ),
@ -358,7 +358,7 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
IconButton.styleFrom(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))), IconButton.styleFrom(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))),
onPressed: () => onPressed: () =>
controller.previousPage(duration: const Duration(milliseconds: 125), curve: Curves.easeInOut), controller.previousPage(duration: const Duration(milliseconds: 125), curve: Curves.easeInOut),
icon: const Icon(IconsaxBold.arrow_left), icon: const Icon(IconsaxPlusBold.arrow_left),
), ),
), ),
), ),
@ -410,8 +410,8 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
child: AnimatedVisibilityIcon( child: AnimatedVisibilityIcon(
key: Key(currentPhoto.id), key: Key(currentPhoto.id),
isFilled: currentPhoto.userData.isFavourite, isFilled: currentPhoto.userData.isFavourite,
filledIcon: IconsaxBold.heart, filledIcon: IconsaxPlusBold.heart,
outlinedIcon: IconsaxOutline.heart, outlinedIcon: IconsaxPlusLinear.heart,
), ),
), ),
) )
@ -441,8 +441,8 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
.read(photoViewSettingsProvider.notifier) .read(photoViewSettingsProvider.notifier)
.update((state) => state.copyWith(repeat: !state.repeat)), .update((state) => state.copyWith(repeat: !state.repeat)),
icon: ref.watch(photoViewSettingsProvider.select((value) => value.repeat)) icon: ref.watch(photoViewSettingsProvider.select((value) => value.repeat))
? IconsaxOutline.repeat ? IconsaxPlusLinear.repeat
: IconsaxOutline.repeate_one, : IconsaxPlusLinear.repeate_one,
), ),
ElevatedIconButtonLabel( ElevatedIconButtonLabel(
label: context.localized.audio, label: context.localized.audio,
@ -450,8 +450,8 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
.read(photoViewSettingsProvider.notifier) .read(photoViewSettingsProvider.notifier)
.update((state) => state.copyWith(mute: !state.mute)), .update((state) => state.copyWith(mute: !state.mute)),
icon: ref.watch(photoViewSettingsProvider.select((value) => value.mute)) icon: ref.watch(photoViewSettingsProvider.select((value) => value.mute))
? IconsaxOutline.volume_slash ? IconsaxPlusLinear.volume_slash
: IconsaxOutline.volume_high, : IconsaxPlusLinear.volume_high,
), ),
ElevatedIconButtonLabel( ElevatedIconButtonLabel(
label: context.localized.autoPlay, label: context.localized.autoPlay,
@ -459,8 +459,8 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
.read(photoViewSettingsProvider.notifier) .read(photoViewSettingsProvider.notifier)
.update((state) => state.copyWith(autoPlay: !state.autoPlay)), .update((state) => state.copyWith(autoPlay: !state.autoPlay)),
icon: ref.watch(photoViewSettingsProvider.select((value) => value.autoPlay)) icon: ref.watch(photoViewSettingsProvider.select((value) => value.autoPlay))
? IconsaxOutline.play_remove ? IconsaxPlusLinear.play_remove
: IconsaxOutline.play, : IconsaxPlusLinear.play,
), ),
ElevatedIconButtonLabel( ElevatedIconButtonLabel(
label: context.localized.backgroundBlur, label: context.localized.backgroundBlur,
@ -468,8 +468,8 @@ class _PhotoViewerScreenState extends ConsumerState<PhotoViewerScreen> with Widg
.read(photoViewSettingsProvider.notifier) .read(photoViewSettingsProvider.notifier)
.update((state) => state.copyWith(theaterMode: !state.theaterMode)), .update((state) => state.copyWith(theaterMode: !state.theaterMode)),
icon: ref.watch(photoViewSettingsProvider.select((value) => value.theaterMode)) icon: ref.watch(photoViewSettingsProvider.select((value) => value.theaterMode))
? IconsaxOutline.filter_remove ? IconsaxPlusLinear.filter_remove
: IconsaxOutline.filter, : IconsaxPlusLinear.filter,
), ),
].addInBetween(const SizedBox(width: 16)), ].addInBetween(const SizedBox(width: 16)),
); );

View file

@ -2,7 +2,7 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:wakelock_plus/wakelock_plus.dart';
@ -222,7 +222,7 @@ class _SimpleVideoPlayerState extends ConsumerState<SimpleVideoPlayer> with Wind
} }
}, },
icon: Icon( icon: Icon(
player.lastState.playing ? IconsaxBold.pause_circle : IconsaxBold.play_circle, player.lastState.playing ? IconsaxPlusBold.pause_circle : IconsaxPlusBold.play_circle,
), ),
) )
], ],

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -55,7 +55,7 @@ class _AddToPlaylistState extends ConsumerState<AddToPlaylist> {
), ),
IconButton( IconButton(
onPressed: () => ref.read(provider.notifier).setItems(widget.items), onPressed: () => ref.read(provider.notifier).setItems(widget.items),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
) )
], ],
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -31,7 +31,7 @@ const socials = [
_Socials( _Socials(
'Weblate', 'Weblate',
'https://hosted.weblate.org/projects/fladder/', 'https://hosted.weblate.org/projects/fladder/',
IconsaxOutline.global, IconsaxPlusLinear.global,
), ),
]; ];

View file

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
@ -74,7 +74,7 @@ List<Widget> buildClientSettingsDownload(BuildContext context, WidgetRef ref, Fu
], ],
), ),
), ),
icon: const Icon(IconsaxOutline.folder_minus), icon: const Icon(IconsaxPlusLinear.folder_minus),
) )
: null, : null,
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/settings/home_settings_model.dart'; import 'package:fladder/models/settings/home_settings_model.dart';
@ -76,15 +76,15 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
IconData get deviceIcon { IconData get deviceIcon {
if (AdaptiveLayout.of(context).isDesktop) { if (AdaptiveLayout.of(context).isDesktop) {
return IconsaxOutline.monitor; return IconsaxPlusLinear.monitor;
} }
switch (AdaptiveLayout.viewSizeOf(context)) { switch (AdaptiveLayout.viewSizeOf(context)) {
case ViewSize.phone: case ViewSize.phone:
return IconsaxOutline.mobile; return IconsaxPlusLinear.mobile;
case ViewSize.tablet: case ViewSize.tablet:
return IconsaxOutline.monitor; return IconsaxPlusLinear.monitor;
case ViewSize.desktop: case ViewSize.desktop:
return IconsaxOutline.monitor; return IconsaxPlusLinear.monitor;
} }
} }
@ -115,21 +115,21 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
if (quickConnectAvailable) if (quickConnectAvailable)
SettingsListTile( SettingsListTile(
label: Text(context.localized.settingsQuickConnectTitle), label: Text(context.localized.settingsQuickConnectTitle),
icon: IconsaxOutline.password_check, icon: IconsaxPlusLinear.password_check,
onTap: () => openQuickConnectDialog(context), onTap: () => openQuickConnectDialog(context),
), ),
SettingsListTile( SettingsListTile(
label: Text(context.localized.settingsProfileTitle), label: Text(context.localized.settingsProfileTitle),
subLabel: Text(context.localized.settingsProfileDesc), subLabel: Text(context.localized.settingsProfileDesc),
selected: containsRoute(const SecuritySettingsRoute()), selected: containsRoute(const SecuritySettingsRoute()),
icon: IconsaxOutline.security_user, icon: IconsaxPlusLinear.security_user,
onTap: () => navigateTo(const SecuritySettingsRoute()), onTap: () => navigateTo(const SecuritySettingsRoute()),
), ),
SettingsListTile( SettingsListTile(
label: Text(context.localized.settingsPlayerTitle), label: Text(context.localized.settingsPlayerTitle),
subLabel: Text(context.localized.settingsPlayerDesc), subLabel: Text(context.localized.settingsPlayerDesc),
selected: containsRoute(const PlayerSettingsRoute()), selected: containsRoute(const PlayerSettingsRoute()),
icon: IconsaxOutline.video_play, icon: IconsaxPlusLinear.video_play,
onTap: () => navigateTo(const PlayerSettingsRoute()), onTap: () => navigateTo(const PlayerSettingsRoute()),
), ),
SettingsListTile( SettingsListTile(
@ -162,7 +162,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
context.router.replaceAll([const LoginRoute()]); context.router.replaceAll([const LoginRoute()]);
}, },
child: const Icon( child: const Icon(
IconsaxOutline.arrow_swap_horizontal, IconsaxPlusLinear.arrow_swap_horizontal,
), ),
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@ -205,7 +205,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
); );
}, },
child: Icon( child: Icon(
IconsaxOutline.logout, IconsaxPlusLinear.logout,
color: Theme.of(context).colorScheme.onErrorContainer, color: Theme.of(context).colorScheme.onErrorContainer,
), ),
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/util/list_padding.dart'; import 'package:fladder/util/list_padding.dart';
@ -41,9 +41,9 @@ class SettingsMessageBox extends ConsumerWidget {
children: [ children: [
Icon( Icon(
switch (messageType) { switch (messageType) {
MessageType.info => IconsaxOutline.information, MessageType.info => IconsaxPlusLinear.information,
MessageType.warning => IconsaxOutline.warning_2, MessageType.warning => IconsaxPlusLinear.warning_2,
MessageType.error => IconsaxOutline.danger, MessageType.error => IconsaxPlusLinear.danger,
}, },
), ),
Flexible( Flexible(

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/models/account_model.dart'; import 'package:fladder/models/account_model.dart';
import 'package:fladder/screens/shared/fladder_snackbar.dart'; import 'package:fladder/screens/shared/fladder_snackbar.dart';
import 'package:fladder/screens/shared/passcode_input.dart'; import 'package:fladder/screens/shared/passcode_input.dart';
@ -16,7 +16,7 @@ void showAuthOptionsDialogue(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
scrollable: true, scrollable: true,
icon: const Icon(IconsaxBold.lock_1), icon: const Icon(IconsaxPlusBold.lock_1),
title: Text(context.localized.appLockTitle(currentUser.name)), title: Text(context.localized.appLockTitle(currentUser.name)),
actionsOverflowDirection: VerticalDirection.down, actionsOverflowDirection: VerticalDirection.down,
actions: Authentication.values actions: Authentication.values

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/models/settings/home_settings_model.dart'; import 'package:fladder/models/settings/home_settings_model.dart';
import 'package:fladder/util/adaptive_layout.dart'; import 'package:fladder/util/adaptive_layout.dart';
@ -96,7 +96,7 @@ class CategoryChip<T> extends StatelessWidget {
newEntry = null; newEntry = null;
onClear!(); onClear!();
}, },
icon: const Icon(IconsaxOutline.back_square), icon: const Icon(IconsaxPlusLinear.back_square),
label: Text(context.localized.clear), label: Text(context.localized.clear),
) )
].addInBetween(const SizedBox(width: 6)); ].addInBetween(const SizedBox(width: 6));
@ -123,7 +123,7 @@ class CategoryChip<T> extends StatelessWidget {
newEntry = null; newEntry = null;
onClear!(); onClear!();
}, },
icon: const Icon(IconsaxOutline.back_square), icon: const Icon(IconsaxPlusLinear.back_square),
label: Text(context.localized.clear), label: Text(context.localized.clear),
) )
].addInBetween(const SizedBox(width: 6)), ].addInBetween(const SizedBox(width: 6)),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -194,7 +194,7 @@ class _DetailScaffoldState extends ConsumerState<DetailScaffold> {
onPressed: () => context.router.popBack(), onPressed: () => context.router.popBack(),
icon: Padding( icon: Padding(
padding: EdgeInsets.all(AdaptiveLayout.of(context).inputDevice == InputDevice.pointer ? 0 : 4), padding: EdgeInsets.all(AdaptiveLayout.of(context).inputDevice == InputDevice.pointer ? 0 : 4),
child: const Icon(IconsaxOutline.arrow_left_2), child: const Icon(IconsaxPlusLinear.arrow_left_2),
), ),
), ),
const Spacer(), const Spacer(),
@ -241,7 +241,7 @@ class _DetailScaffoldState extends ConsumerState<DetailScaffold> {
message: context.localized.refresh, message: context.localized.refresh,
child: IconButton( child: IconButton(
onPressed: () => context.refreshData(), onPressed: () => context.refreshData(),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
), ),
), ),
), ),
@ -259,7 +259,7 @@ class _DetailScaffoldState extends ConsumerState<DetailScaffold> {
message: context.localized.home, message: context.localized.home,
child: IconButton( child: IconButton(
onPressed: () => context.router.navigate(const DashboardRoute()), onPressed: () => context.router.navigate(const DashboardRoute()),
icon: const Icon(IconsaxOutline.home), icon: const Icon(IconsaxPlusLinear.home),
), ),
), ),
], ],

View file

@ -1,5 +1,5 @@
import 'package:desktop_drop/desktop_drop.dart'; import 'package:desktop_drop/desktop_drop.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/screens/shared/outlined_text_field.dart'; import 'package:fladder/screens/shared/outlined_text_field.dart';
import 'package:fladder/util/adaptive_layout.dart'; import 'package:fladder/util/adaptive_layout.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@ -131,7 +131,7 @@ class _FilePickerBarState extends ConsumerState<FilePickerBar> {
), ),
const SizedBox(width: 12), const SizedBox(width: 12),
Icon( Icon(
IconsaxBold.folder_add, IconsaxPlusBold.folder_add,
color: contentColor, color: contentColor,
) )
], ],

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:square_progress_indicator/square_progress_indicator.dart'; import 'package:square_progress_indicator/square_progress_indicator.dart';
@ -42,7 +42,7 @@ class BannerPlayButton extends ConsumerWidget {
IconButton( IconButton(
onPressed: () => item.play(context, ref), onPressed: () => item.play(context, ref),
icon: const Icon( icon: const Icon(
IconsaxBold.play, IconsaxPlusBold.play,
size: 30, size: 30,
), ),
) )

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -194,7 +194,7 @@ class _CarouselBannerState extends ConsumerState<CarouselBanner> {
carouselController.animateTo(currentPos.pixels - itemExtent, carouselController.animateTo(currentPos.pixels - itemExtent,
curve: Curves.easeInOutCubic, duration: const Duration(milliseconds: 250)); curve: Curves.easeInOutCubic, duration: const Duration(milliseconds: 250));
}, },
icon: const Icon(IconsaxOutline.arrow_left_2), icon: const Icon(IconsaxPlusLinear.arrow_left_2),
), ),
IconButton.filledTonal( IconButton.filledTonal(
onPressed: () { onPressed: () {
@ -202,7 +202,7 @@ class _CarouselBannerState extends ConsumerState<CarouselBanner> {
carouselController.animateTo(currentPos.pixels + itemExtent, carouselController.animateTo(currentPos.pixels + itemExtent,
curve: Curves.easeInOutCubic, duration: const Duration(milliseconds: 250)); curve: Curves.easeInOutCubic, duration: const Duration(milliseconds: 250));
}, },
icon: const Icon(IconsaxOutline.arrow_right_3), icon: const Icon(IconsaxPlusLinear.arrow_right_3),
), ),
], ],
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -43,7 +43,7 @@ class MediaPlayButton extends ConsumerWidget {
), ),
const SizedBox(width: 4), const SizedBox(width: 4),
const Icon( const Icon(
IconsaxBold.play, IconsaxPlusBold.play,
), ),
], ],
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/book_model.dart'; import 'package:fladder/models/book_model.dart';
@ -171,7 +171,7 @@ class _PosterImageState extends ConsumerState<PosterImage> {
StatusCard( StatusCard(
color: Colors.red, color: Colors.red,
child: Icon( child: Icon(
IconsaxBold.heart, IconsaxPlusBold.heart,
size: 21, size: 21,
color: Colors.red, color: Colors.red,
), ),
@ -252,7 +252,7 @@ class _PosterImageState extends ConsumerState<PosterImage> {
child: IconButton.filledTonal( child: IconButton.filledTonal(
onPressed: () => widget.playVideo?.call(false), onPressed: () => widget.playVideo?.call(false),
icon: const Icon( icon: const Icon(
IconsaxBold.play, IconsaxPlusBold.play,
size: 32, size: 32,
), ),
), ),

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart'; import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/providers/sync_provider.dart'; import 'package:fladder/providers/sync_provider.dart';
import 'package:fladder/screens/shared/media/episode_posters.dart'; import 'package:fladder/screens/shared/media/episode_posters.dart';
@ -13,8 +13,8 @@ import 'package:fladder/models/items/episode_model.dart';
import 'package:fladder/util/humanize_duration.dart'; import 'package:fladder/util/humanize_duration.dart';
enum EpisodeDetailsViewType { enum EpisodeDetailsViewType {
list(icon: IconsaxBold.grid_6), list(icon: IconsaxPlusBold.grid_6),
grid(icon: IconsaxBold.grid_2); grid(icon: IconsaxPlusBold.grid_2);
const EpisodeDetailsViewType({required this.icon}); const EpisodeDetailsViewType({required this.icon});

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/util/localization_helper.dart'; import 'package:fladder/util/localization_helper.dart';
import 'package:fladder/util/sticky_header_text.dart'; import 'package:fladder/util/sticky_header_text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -68,11 +68,11 @@ class _ExpandingOverviewState extends ConsumerState<ExpandingOverview> {
child: expanded child: expanded
? IconButton.filledTonal( ? IconButton.filledTonal(
onPressed: toggleState, onPressed: toggleState,
icon: const Icon(IconsaxOutline.arrow_up_2), icon: const Icon(IconsaxPlusLinear.arrow_up_2),
) )
: IconButton.filledTonal( : IconButton.filledTonal(
onPressed: toggleState, onPressed: toggleState,
icon: const Icon(IconsaxOutline.arrow_down_1), icon: const Icon(IconsaxPlusLinear.arrow_down_1),
), ),
), ),
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -253,7 +253,7 @@ class _MediaBannerState extends ConsumerState<MediaBanner> {
children: [ children: [
IconButton.filledTonal( IconButton.filledTonal(
onPressed: () => nextSlide(), onPressed: () => nextSlide(),
icon: const Icon(IconsaxOutline.arrow_right_3), icon: const Icon(IconsaxPlusLinear.arrow_right_3),
) )
], ],
), ),

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/models/book_model.dart'; import 'package:fladder/models/book_model.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/items/item_shared_models.dart'; import 'package:fladder/models/items/item_shared_models.dart';
@ -181,7 +181,7 @@ class PosterListItem extends ConsumerWidget {
), ),
if (poster.userData.isFavourite) if (poster.userData.isFavourite)
const Icon( const Icon(
IconsaxBold.heart, IconsaxPlusBold.heart,
color: Colors.red, color: Colors.red,
), ),
if (AdaptiveLayout.of(context).isDesktop) if (AdaptiveLayout.of(context).isDesktop)

View file

@ -1,5 +1,5 @@
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/util/list_padding.dart'; import 'package:fladder/util/list_padding.dart';
import 'package:fladder/util/localization_helper.dart'; import 'package:fladder/util/localization_helper.dart';
import 'package:fladder/widgets/navigation_scaffold/components/settings_user_icon.dart'; import 'package:fladder/widgets/navigation_scaffold/components/settings_user_icon.dart';
@ -36,7 +36,7 @@ class NestedSliverAppBar extends ConsumerWidget {
), ),
onPressed: () => Scaffold.of(parent).openDrawer(), onPressed: () => Scaffold.of(parent).openDrawer(),
icon: const Icon( icon: const Icon(
IconsaxBold.menu, IconsaxPlusBold.menu,
size: 28, size: 28,
), ),
), ),
@ -59,7 +59,7 @@ class NestedSliverAppBar extends ConsumerWidget {
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const Icon(IconsaxOutline.search_normal), const Icon(IconsaxPlusLinear.search_normal),
const SizedBox(width: 16), const SizedBox(width: 16),
Transform.translate( Transform.translate(
offset: const Offset(0, 2.5), offset: const Offset(0, 2.5),

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/syncing/sync_item.dart'; import 'package:fladder/models/syncing/sync_item.dart';
import 'package:fladder/providers/sync/sync_provider_helpers.dart'; import 'package:fladder/providers/sync/sync_provider_helpers.dart';
@ -45,10 +45,10 @@ class _SyncButtonState extends ConsumerState<SyncButton> {
syncedItem != null syncedItem != null
? status == SyncStatus.partially ? status == SyncStatus.partially
? (progress?.progress ?? 0) > 0 ? (progress?.progress ?? 0) > 0
? IconsaxOutline.arrow_down ? IconsaxPlusLinear.arrow_down
: IconsaxOutline.more_circle : IconsaxPlusLinear.more_circle
: IconsaxOutline.tick_circle : IconsaxPlusLinear.tick_circle
: IconsaxOutline.arrow_down_2, : IconsaxPlusLinear.arrow_down_2,
color: status?.color, color: status?.color,
size: (progress?.progress ?? 0) > 0 ? 16 : null, size: (progress?.progress ?? 0) > 0 ? 16 : null,
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:background_downloader/background_downloader.dart'; import 'package:background_downloader/background_downloader.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/items/episode_model.dart'; import 'package:fladder/models/items/episode_model.dart';
@ -73,7 +73,7 @@ class _SyncItemDetailsState extends ConsumerState<SyncItemDetails> {
), ),
IconButton( IconButton(
onPressed: () => Navigator.pop(context), onPressed: () => Navigator.pop(context),
icon: const Icon(IconsaxBold.close_circle), icon: const Icon(IconsaxPlusBold.close_circle),
) )
], ],
), ),
@ -126,19 +126,19 @@ class _SyncItemDetailsState extends ConsumerState<SyncItemDetails> {
IconButton( IconButton(
onPressed: () => onPressed: () =>
ref.read(backgroundDownloaderProvider).pause(combinedStream!.task!), ref.read(backgroundDownloaderProvider).pause(combinedStream!.task!),
icon: const Icon(IconsaxBold.pause), icon: const Icon(IconsaxPlusBold.pause),
), ),
if (combinedStream?.status == TaskStatus.paused) ...[ if (combinedStream?.status == TaskStatus.paused) ...[
IconButton( IconButton(
onPressed: () => onPressed: () =>
ref.read(backgroundDownloaderProvider).resume(combinedStream!.task!), ref.read(backgroundDownloaderProvider).resume(combinedStream!.task!),
icon: const Icon(IconsaxBold.play), icon: const Icon(IconsaxPlusBold.play),
), ),
IconButton( IconButton(
onPressed: () => ref onPressed: () => ref
.read(syncProvider.notifier) .read(syncProvider.notifier)
.deleteFullSyncFiles(syncedItem, combinedStream?.task), .deleteFullSyncFiles(syncedItem, combinedStream?.task),
icon: const Icon(IconsaxBold.stop), icon: const Icon(IconsaxPlusBold.stop),
), ),
], ],
const SizedBox(width: 16) const SizedBox(width: 16)
@ -168,7 +168,7 @@ class _SyncItemDetailsState extends ConsumerState<SyncItemDetails> {
if (!hasFile && !downloadTask.hasDownload && syncedItem.hasVideoFile) if (!hasFile && !downloadTask.hasDownload && syncedItem.hasVideoFile)
IconButtonAwait( IconButtonAwait(
onPressed: () async => await ref.read(syncProvider.notifier).syncVideoFile(syncedItem, false), onPressed: () async => await ref.read(syncProvider.notifier).syncVideoFile(syncedItem, false),
icon: const Icon(IconsaxOutline.cloud_change), icon: const Icon(IconsaxPlusLinear.cloud_change),
) )
else if (hasFile) else if (hasFile)
IconButtonAwait( IconButtonAwait(
@ -187,7 +187,7 @@ class _SyncItemDetailsState extends ConsumerState<SyncItemDetails> {
context.localized.cancel, context.localized.cancel,
); );
}, },
icon: const Icon(IconsaxOutline.trash), icon: const Icon(IconsaxPlusLinear.trash),
), ),
].addInBetween(const SizedBox(width: 16)), ].addInBetween(const SizedBox(width: 16)),
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/syncing/sync_item.dart'; import 'package:fladder/models/syncing/sync_item.dart';
@ -43,7 +43,7 @@ class SyncListItemState extends ConsumerState<SyncListItem> {
child: const Padding( child: const Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Row( child: Row(
children: [Icon(IconsaxBold.trash)], children: [Icon(IconsaxPlusBold.trash)],
), ),
), ),
), ),
@ -132,7 +132,7 @@ class SyncListItemState extends ConsumerState<SyncListItem> {
)), )),
IconButton( IconButton(
onPressed: () => showSyncItemDetails(context, syncedItem, ref), onPressed: () => showSyncItemDetails(context, syncedItem, ref),
icon: const Icon(IconsaxOutline.more_square), icon: const Icon(IconsaxPlusLinear.more_square),
), ),
], ],
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:background_downloader/background_downloader.dart'; import 'package:background_downloader/background_downloader.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/items/episode_model.dart'; import 'package:fladder/models/items/episode_model.dart';
@ -75,17 +75,17 @@ class SyncProgressBar extends ConsumerWidget {
if (downloadStatus != TaskStatus.paused) if (downloadStatus != TaskStatus.paused)
IconButton( IconButton(
onPressed: () => ref.read(backgroundDownloaderProvider).pause(downloadTask), onPressed: () => ref.read(backgroundDownloaderProvider).pause(downloadTask),
icon: const Icon(IconsaxBold.pause), icon: const Icon(IconsaxPlusBold.pause),
) )
}, },
if (downloadStatus == TaskStatus.paused && downloadTask != null) ...[ if (downloadStatus == TaskStatus.paused && downloadTask != null) ...[
IconButton( IconButton(
onPressed: () => ref.read(backgroundDownloaderProvider).resume(downloadTask), onPressed: () => ref.read(backgroundDownloaderProvider).resume(downloadTask),
icon: const Icon(IconsaxBold.play), icon: const Icon(IconsaxPlusBold.play),
), ),
IconButton( IconButton(
onPressed: () => ref.read(syncProvider.notifier).deleteFullSyncFiles(item, downloadTask), onPressed: () => ref.read(syncProvider.notifier).deleteFullSyncFiles(item, downloadTask),
icon: const Icon(IconsaxBold.stop), icon: const Icon(IconsaxPlusBold.stop),
) )
], ],
].addInBetween(const SizedBox(width: 8)), ].addInBetween(const SizedBox(width: 8)),

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/settings/home_settings_model.dart'; import 'package:fladder/models/settings/home_settings_model.dart';
@ -83,7 +83,7 @@ class _SyncedScreenState extends ConsumerState<SyncedScreen> {
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
const Icon( const Icon(
IconsaxOutline.cloud_cross, IconsaxPlusLinear.cloud_cross,
) )
], ],
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/syncing/sync_item.dart'; import 'package:fladder/models/syncing/sync_item.dart';
@ -33,7 +33,7 @@ class SyncStatusOverlay extends ConsumerWidget {
valueColor: AlwaysStoppedAnimation(Theme.of(context).colorScheme.error), valueColor: AlwaysStoppedAnimation(Theme.of(context).colorScheme.error),
), ),
Text(context.localized.syncOverlayDeleting), Text(context.localized.syncOverlayDeleting),
const Icon(IconsaxOutline.trash) const Icon(IconsaxPlusLinear.trash)
].addPadding(const EdgeInsets.symmetric(horizontal: 16)), ].addPadding(const EdgeInsets.symmetric(horizontal: 16)),
), ),
), ),
@ -55,7 +55,7 @@ class SyncStatusOverlay extends ConsumerWidget {
valueColor: AlwaysStoppedAnimation(Theme.of(context).colorScheme.error), valueColor: AlwaysStoppedAnimation(Theme.of(context).colorScheme.error),
), ),
Text(context.localized.syncOverlaySyncing), Text(context.localized.syncOverlaySyncing),
const Icon(IconsaxOutline.cloud_notif) const Icon(IconsaxPlusLinear.cloud_notif)
].addPadding(const EdgeInsets.symmetric(horizontal: 16)), ].addPadding(const EdgeInsets.symmetric(horizontal: 16)),
), ),
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/items/episode_model.dart'; import 'package:fladder/models/items/episode_model.dart';
@ -97,7 +97,7 @@ class _SyncedEpisodeItemState extends ConsumerState<SyncedEpisodeItem> {
if (!hasFile && !downloadTask.hasDownload) if (!hasFile && !downloadTask.hasDownload)
IconButtonAwait( IconButtonAwait(
onPressed: () async => await ref.read(syncProvider.notifier).syncVideoFile(syncedItem, false), onPressed: () async => await ref.read(syncProvider.notifier).syncVideoFile(syncedItem, false),
icon: const Icon(IconsaxOutline.cloud_change), icon: const Icon(IconsaxPlusLinear.cloud_change),
) )
else if (hasFile) else if (hasFile)
IconButtonAwait( IconButtonAwait(
@ -116,7 +116,7 @@ class _SyncedEpisodeItemState extends ConsumerState<SyncedEpisodeItem> {
context.localized.cancel, context.localized.cancel,
); );
}, },
icon: const Icon(IconsaxOutline.trash), icon: const Icon(IconsaxPlusLinear.trash),
) )
].addInBetween(const SizedBox(width: 16)), ].addInBetween(const SizedBox(width: 16)),
); );

View file

@ -2,7 +2,7 @@ import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/playback/playback_model.dart'; import 'package:fladder/models/playback/playback_model.dart';
@ -70,7 +70,7 @@ class _VideoPlaybackInformation extends ConsumerWidget {
), ),
IconButton.filled( IconButton.filled(
onPressed: () => context.copyToClipboard(playbackModel?.media?.url ?? "No url"), onPressed: () => context.copyToClipboard(playbackModel?.media?.url ?? "No url"),
icon: const Icon(IconsaxOutline.copy), icon: const Icon(IconsaxPlusLinear.copy),
) )
], ],
) )

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:screen_brightness/screen_brightness.dart'; import 'package:screen_brightness/screen_brightness.dart';
@ -276,13 +276,13 @@ class _VideoPlayerNextWrapperState extends ConsumerState<VideoPlayerNextWrapper>
IconButton.filledTonal( IconButton.filledTonal(
onPressed: () => hideNextUp(), onPressed: () => hideNextUp(),
tooltip: context.localized.resumeVideo, tooltip: context.localized.resumeVideo,
icon: const Icon(IconsaxBold.maximize_4), icon: const Icon(IconsaxPlusBold.maximize_4),
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
IconButton.filledTonal( IconButton.filledTonal(
onPressed: () => closePlayer(), onPressed: () => closePlayer(),
tooltip: context.localized.closeVideo, tooltip: context.localized.closeVideo,
icon: const Icon(IconsaxBold.close_square), icon: const Icon(IconsaxPlusBold.close_square),
), ),
], ],
), ),
@ -454,13 +454,13 @@ class _SimpleControls extends ConsumerWidget {
children: [ children: [
IconButton.filledTonal( IconButton.filledTonal(
onPressed: () => player.playOrPause(), onPressed: () => player.playOrPause(),
icon: Icon(isPlaying ? IconsaxBold.pause : IconsaxBold.play), icon: Icon(isPlaying ? IconsaxPlusBold.pause : IconsaxPlusBold.play),
), ),
if (skip != null) if (skip != null)
IconButton.filledTonal( IconButton.filledTonal(
onPressed: skip, onPressed: skip,
tooltip: context.localized.playNextVideo, tooltip: context.localized.playNextVideo,
icon: const Icon(IconsaxBold.next), icon: const Icon(IconsaxPlusBold.next),
) )
].addInBetween(const SizedBox(width: 4))); ].addInBetween(const SizedBox(width: 4)));
} }

View file

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
@ -124,7 +124,7 @@ class _VideoOptionsMobileState extends ConsumerState<VideoOptions> {
icon: Opacity( icon: Opacity(
opacity: videoSettings.screenBrightness != null ? 0.5 : 1, opacity: videoSettings.screenBrightness != null ? 0.5 : 1,
child: Icon( child: Icon(
IconsaxBold.autobrightness, IconsaxPlusBold.autobrightness,
color: Theme.of(context).colorScheme.primary, color: Theme.of(context).colorScheme.primary,
), ),
), ),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/providers/settings/video_player_settings_provider.dart'; import 'package:fladder/providers/settings/video_player_settings_provider.dart';
@ -70,10 +70,10 @@ class _VideoVolumeSliderState extends ConsumerState<VideoVolumeSlider> {
IconData volumeIcon(double value) { IconData volumeIcon(double value) {
if (value <= 0) { if (value <= 0) {
return IconsaxOutline.volume_mute; return IconsaxPlusLinear.volume_mute;
} }
if (value < 50) { if (value < 50) {
return IconsaxOutline.volume_low; return IconsaxPlusLinear.volume_low;
} }
return IconsaxOutline.volume_high; return IconsaxPlusLinear.volume_high;
} }

View file

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:screen_brightness/screen_brightness.dart'; import 'package:screen_brightness/screen_brightness.dart';
@ -216,7 +216,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
isSelected: true, isSelected: true,
iconSize: 65, iconSize: 65,
tooltip: "Resume video", tooltip: "Resume video",
icon: const Icon(IconsaxBold.play), icon: const Icon(IconsaxPlusBold.play),
), ),
), ),
); );
@ -253,7 +253,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
IconButton( IconButton(
onPressed: () => minimizePlayer(context), onPressed: () => minimizePlayer(context),
icon: const Icon( icon: const Icon(
IconsaxOutline.arrow_down_1, IconsaxPlusLinear.arrow_down_1,
size: 24, size: 24,
), ),
), ),
@ -276,7 +276,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
Tooltip( Tooltip(
message: context.localized.stop, message: context.localized.stop,
child: IconButton( child: IconButton(
onPressed: () => closePlayer(), icon: const Icon(IconsaxOutline.close_square))), onPressed: () => closePlayer(), icon: const Icon(IconsaxPlusLinear.close_square))),
], ],
), ),
), ),
@ -321,22 +321,22 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
children: <Widget>[ children: <Widget>[
IconButton( IconButton(
onPressed: () => showVideoPlayerOptions(context, () => minimizePlayer(context)), onPressed: () => showVideoPlayerOptions(context, () => minimizePlayer(context)),
icon: const Icon(IconsaxOutline.more)), icon: const Icon(IconsaxPlusLinear.more)),
if (AdaptiveLayout.layoutOf(context) == ViewSize.tablet) ...[ if (AdaptiveLayout.layoutOf(context) == ViewSize.tablet) ...[
IconButton( IconButton(
onPressed: () => showSubSelection(context), onPressed: () => showSubSelection(context),
icon: const Icon(IconsaxOutline.subtitle), icon: const Icon(IconsaxPlusLinear.subtitle),
), ),
IconButton( IconButton(
onPressed: () => showAudioSelection(context), onPressed: () => showAudioSelection(context),
icon: const Icon(IconsaxOutline.audio_square), icon: const Icon(IconsaxPlusLinear.audio_square),
), ),
], ],
if (AdaptiveLayout.layoutOf(context) == ViewSize.desktop) ...[ if (AdaptiveLayout.layoutOf(context) == ViewSize.desktop) ...[
Flexible( Flexible(
child: ElevatedButton.icon( child: ElevatedButton.icon(
onPressed: () => showSubSelection(context), onPressed: () => showSubSelection(context),
icon: const Icon(IconsaxOutline.subtitle), icon: const Icon(IconsaxPlusLinear.subtitle),
label: Text( label: Text(
ref.watch(playBackModel.select((value) { ref.watch(playBackModel.select((value) {
final language = value?.mediaStreams?.currentSubStream?.language; final language = value?.mediaStreams?.currentSubStream?.language;
@ -350,7 +350,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
Flexible( Flexible(
child: ElevatedButton.icon( child: ElevatedButton.icon(
onPressed: () => showAudioSelection(context), onPressed: () => showAudioSelection(context),
icon: const Icon(IconsaxOutline.audio_square), icon: const Icon(IconsaxPlusLinear.audio_square),
label: Text( label: Text(
ref.watch(playBackModel.select((value) { ref.watch(playBackModel.select((value) {
final language = value?.mediaStreams?.currentAudioStream?.language; final language = value?.mediaStreams?.currentAudioStream?.language;
@ -375,7 +375,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
ref.read(videoPlayerProvider).playOrPause(); ref.read(videoPlayerProvider).playOrPause();
}, },
icon: Icon( icon: Icon(
mediaPlayback.playing ? IconsaxBold.pause : IconsaxBold.play, mediaPlayback.playing ? IconsaxPlusBold.pause : IconsaxPlusBold.play,
), ),
), ),
seekForwardButton(ref), seekForwardButton(ref),
@ -389,7 +389,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
Tooltip( Tooltip(
message: context.localized.stop, message: context.localized.stop,
child: IconButton( child: IconButton(
onPressed: () => closePlayer(), icon: const Icon(IconsaxOutline.close_square))), onPressed: () => closePlayer(), icon: const Icon(IconsaxPlusLinear.close_square))),
const Spacer(), const Spacer(),
if (AdaptiveLayout.viewSizeOf(context) >= ViewSize.tablet && if (AdaptiveLayout.viewSizeOf(context) >= ViewSize.tablet &&
ref.read(videoPlayerProvider).hasPlayer) ...{ ref.read(videoPlayerProvider).hasPlayer) ...{
@ -398,7 +398,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
message: context.localized.qualityOptionsTitle, message: context.localized.qualityOptionsTitle,
child: IconButton( child: IconButton(
onPressed: () => openQualityOptions(context), onPressed: () => openQualityOptions(context),
icon: const Icon(IconsaxOutline.speedometer), icon: const Icon(IconsaxPlusLinear.speedometer),
), ),
), ),
}, },
@ -537,7 +537,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
: null, : null,
iconSize: 30, iconSize: 30,
icon: const Icon( icon: const Icon(
IconsaxOutline.backward, IconsaxPlusLinear.backward,
), ),
), ),
); );
@ -563,7 +563,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
nextVideo != null && !buffering ? () => ref.read(playbackModelHelper).loadNewVideo(nextVideo) : null, nextVideo != null && !buffering ? () => ref.read(playbackModelHelper).loadNewVideo(nextVideo) : null,
iconSize: 30, iconSize: 30,
icon: const Icon( icon: const Icon(
IconsaxOutline.forward, IconsaxPlusLinear.forward,
), ),
), ),
); );
@ -577,7 +577,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
tooltip: "-10", tooltip: "-10",
iconSize: 40, iconSize: 40,
icon: const Icon( icon: const Icon(
IconsaxOutline.backward_10_seconds, IconsaxPlusLinear.backward_10_seconds,
), ),
); );
} }
@ -589,7 +589,7 @@ class _DesktopControlsState extends ConsumerState<DesktopControls> {
iconSize: 40, iconSize: 40,
icon: const Stack( icon: const Stack(
children: [ children: [
Icon(IconsaxOutline.forward_15_seconds), Icon(IconsaxPlusLinear.forward_15_seconds),
], ],
), ),
); );

View file

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/book_model.dart'; import 'package:fladder/models/book_model.dart';
@ -85,7 +85,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (playAble) if (playAble)
ItemActionButton( ItemActionButton(
action: () => play(context, ref), action: () => play(context, ref),
icon: const Icon(IconsaxOutline.play), icon: const Icon(IconsaxPlusLinear.play),
label: Text(playButtonLabel(context)), label: Text(playButtonLabel(context)),
), ),
if (parentId?.isNotEmpty == true) ...[ if (parentId?.isNotEmpty == true) ...[
@ -105,7 +105,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (!galleryItem && !exclude.contains(ItemActions.details)) if (!galleryItem && !exclude.contains(ItemActions.details))
ItemActionButton( ItemActionButton(
action: () async => await navigateTo(context), action: () async => await navigateTo(context),
icon: const Icon(IconsaxOutline.main_component), icon: const Icon(IconsaxPlusLinear.main_component),
label: Text(context.localized.showDetails), label: Text(context.localized.showDetails),
) )
else if (!exclude.contains(ItemActions.showAlbum) && galleryItem) else if (!exclude.contains(ItemActions.showAlbum) && galleryItem)
@ -117,7 +117,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (!exclude.contains(ItemActions.playFromStart)) if (!exclude.contains(ItemActions.playFromStart))
if ((userData.progress) > 0) if ((userData.progress) > 0)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
action: (this is BookModel) action: (this is BookModel)
? () => ((this as BookModel).play(context, ref, currentPage: 0)) ? () => ((this as BookModel).play(context, ref, currentPage: 0))
: () => play(context, ref, startPosition: Duration.zero), : () => play(context, ref, startPosition: Duration.zero),
@ -129,7 +129,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (!exclude.contains(ItemActions.addCollection) && isAdmin) if (!exclude.contains(ItemActions.addCollection) && isAdmin)
if (type != FladderItemType.boxset) if (type != FladderItemType.boxset)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.archive_add), icon: const Icon(IconsaxPlusLinear.archive_add),
action: () async { action: () async {
await addItemToCollection(context, [this]); await addItemToCollection(context, [this]);
if (context.mounted) { if (context.mounted) {
@ -141,7 +141,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (!exclude.contains(ItemActions.addPlaylist)) if (!exclude.contains(ItemActions.addPlaylist))
if (type != FladderItemType.playlist) if (type != FladderItemType.playlist)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.archive_add), icon: const Icon(IconsaxPlusLinear.archive_add),
action: () async { action: () async {
await addItemToPlaylist(context, [this]); await addItemToPlaylist(context, [this]);
if (context.mounted) { if (context.mounted) {
@ -152,7 +152,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.markPlayed)) if (!exclude.contains(ItemActions.markPlayed))
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.eye), icon: const Icon(IconsaxPlusLinear.eye),
action: () async { action: () async {
final userData = await ref.read(userProvider.notifier).markAsPlayed(true, id); final userData = await ref.read(userProvider.notifier).markAsPlayed(true, id);
onUserDataChanged?.call(userData?.bodyOrThrow); onUserDataChanged?.call(userData?.bodyOrThrow);
@ -162,7 +162,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.markUnplayed)) if (!exclude.contains(ItemActions.markUnplayed))
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.eye_slash), icon: const Icon(IconsaxPlusLinear.eye_slash),
label: Text(context.localized.markAsUnwatched), label: Text(context.localized.markAsUnwatched),
action: () async { action: () async {
final userData = await ref.read(userProvider.notifier).markAsPlayed(false, id); final userData = await ref.read(userProvider.notifier).markAsPlayed(false, id);
@ -172,7 +172,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.setFavorite)) if (!exclude.contains(ItemActions.setFavorite))
ItemActionButton( ItemActionButton(
icon: Icon(userData.isFavourite ? IconsaxOutline.heart_remove : IconsaxOutline.heart_add), icon: Icon(userData.isFavourite ? IconsaxPlusLinear.heart_remove : IconsaxPlusLinear.heart_add),
action: () async { action: () async {
final newData = await ref.read(userProvider.notifier).setAsFavorite(!userData.isFavourite, id); final newData = await ref.read(userProvider.notifier).setAsFavorite(!userData.isFavourite, id);
onUserDataChanged?.call(newData?.bodyOrThrow); onUserDataChanged?.call(newData?.bodyOrThrow);
@ -184,7 +184,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
ItemActionDivider(), ItemActionDivider(),
if (!exclude.contains(ItemActions.editMetaData) && isAdmin) if (!exclude.contains(ItemActions.editMetaData) && isAdmin)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.edit), icon: const Icon(IconsaxPlusLinear.edit),
action: () async { action: () async {
final newItem = await showEditItemPopup(context, id); final newItem = await showEditItemPopup(context, id);
if (newItem != null) { if (newItem != null) {
@ -195,7 +195,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.refreshMetaData) && isAdmin) if (!exclude.contains(ItemActions.refreshMetaData) && isAdmin)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.global_refresh), icon: const Icon(IconsaxPlusLinear.global_refresh),
action: () async { action: () async {
showRefreshPopup(context, id, detailedName(context) ?? name); showRefreshPopup(context, id, detailedName(context) ?? name);
}, },
@ -205,7 +205,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
if (!kIsWeb) if (!kIsWeb)
if (syncedItem == null) if (syncedItem == null)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.arrow_down_2), icon: const Icon(IconsaxPlusLinear.arrow_down_2),
label: Text(context.localized.sync), label: Text(context.localized.sync),
action: () => ref.read(syncProvider.notifier).addSyncItem(context, this), action: () => ref.read(syncProvider.notifier).addSyncItem(context, this),
) )
@ -217,12 +217,12 @@ extension ItemBaseModelExtensions on ItemBaseModel {
) )
else if (downloadUrl != null) ...[ else if (downloadUrl != null) ...[
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.document_download), icon: const Icon(IconsaxPlusLinear.document_download),
action: () => downloadFile(downloadUrl), action: () => downloadFile(downloadUrl),
label: Text(context.localized.downloadFile(type.label(context).toLowerCase())), label: Text(context.localized.downloadFile(type.label(context).toLowerCase())),
), ),
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.link_21), icon: const Icon(IconsaxPlusLinear.link_21),
action: () => context.copyToClipboard(downloadUrl), action: () => context.copyToClipboard(downloadUrl),
label: Text(context.localized.copyStreamUrl), label: Text(context.localized.copyStreamUrl),
) )
@ -232,7 +232,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
ItemActionButton( ItemActionButton(
icon: Container( icon: Container(
child: const Icon( child: const Icon(
IconsaxOutline.trash, IconsaxPlusLinear.trash,
), ),
), ),
action: () async { action: () async {
@ -250,7 +250,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.identify) && identifiable && isAdmin) if (!exclude.contains(ItemActions.identify) && identifiable && isAdmin)
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.search_normal), icon: const Icon(IconsaxPlusLinear.search_normal),
action: () async { action: () async {
showIdentifyScreen(context, this); showIdentifyScreen(context, this);
}, },
@ -258,7 +258,7 @@ extension ItemBaseModelExtensions on ItemBaseModel {
), ),
if (!exclude.contains(ItemActions.mediaInfo)) if (!exclude.contains(ItemActions.mediaInfo))
ItemActionButton( ItemActionButton(
icon: const Icon(IconsaxOutline.info_circle), icon: const Icon(IconsaxPlusLinear.info_circle),
action: () async { action: () async {
showInfoScreen(context, this); showInfoScreen(context, this);
}, },

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/screens/shared/flat_button.dart'; import 'package:fladder/screens/shared/flat_button.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
@ -36,7 +36,7 @@ class StickyHeaderTextState extends ConsumerState<StickyHeaderText> {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 8).copyWith(bottom: 4), padding: const EdgeInsets.symmetric(horizontal: 8).copyWith(bottom: 4),
child: Icon( child: Icon(
IconsaxOutline.arrow_right_3, IconsaxPlusLinear.arrow_right_3,
size: 18, size: 18,
color: Theme.of(context).colorScheme.onSurfaceVariant, color: Theme.of(context).colorScheme.onSurfaceVariant,
), ),

View file

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
@ -173,8 +173,8 @@ class _CurrentlyPlayingBarState extends ConsumerState<FloatingPlayerBar> {
}, },
icon: Icon( icon: Icon(
ref.watch(videoPlayerSettingsProvider.select((value) => value.volume)) <= 0 ref.watch(videoPlayerSettingsProvider.select((value) => value.volume)) <= 0
? IconsaxBold.volume_cross ? IconsaxPlusBold.volume_cross
: IconsaxBold.volume_high, : IconsaxPlusBold.volume_high,
), ),
), ),
}, },
@ -183,7 +183,7 @@ class _CurrentlyPlayingBarState extends ConsumerState<FloatingPlayerBar> {
waitDuration: const Duration(milliseconds: 500), waitDuration: const Duration(milliseconds: 500),
child: IconButton( child: IconButton(
onPressed: () async => stopPlayer(), onPressed: () async => stopPlayer(),
icon: const Icon(IconsaxBold.stop), icon: const Icon(IconsaxPlusBold.stop),
), ),
), ),
].addInBetween(const SizedBox(width: 6)), ].addInBetween(const SizedBox(width: 6)),

View file

@ -3,7 +3,7 @@ import 'package:flutter/services.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/settings/home_settings_model.dart'; import 'package:fladder/models/settings/home_settings_model.dart';
@ -162,7 +162,7 @@ class _NavigationBodyState extends ConsumerState<NavigationBody> {
}); });
} }
}, },
icon: const Icon(IconsaxBold.menu), icon: const Icon(IconsaxPlusBold.menu),
), ),
if (AdaptiveLayout.layoutModeOf(context) == LayoutMode.dual) ...[ if (AdaptiveLayout.layoutModeOf(context) == LayoutMode.dual) ...[
const SizedBox(height: 8), const SizedBox(height: 8),
@ -198,7 +198,7 @@ class _NavigationBodyState extends ConsumerState<NavigationBody> {
color: Theme.of(context).colorScheme.primaryContainer, color: Theme.of(context).colorScheme.primaryContainer,
child: const Padding( child: const Padding(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Icon(IconsaxBold.setting_3), child: Icon(IconsaxPlusBold.setting_3),
), ),
) )
: const SettingsUserIcon()), : const SettingsUserIcon()),

View file

@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/collection_types.dart'; import 'package:fladder/models/collection_types.dart';
@ -54,7 +54,7 @@ class NestedNavigationDrawer extends ConsumerWidget {
), ),
IconButton( IconButton(
onPressed: () => toggleExpanded(false), onPressed: () => toggleExpanded(false),
icon: const Icon(IconsaxOutline.menu), icon: const Icon(IconsaxPlusLinear.menu),
), ),
], ],
), ),
@ -96,7 +96,7 @@ class NestedNavigationDrawer extends ConsumerWidget {
actions: [ actions: [
ItemActionButton( ItemActionButton(
label: Text(context.localized.scanLibrary), label: Text(context.localized.scanLibrary),
icon: const Icon(IconsaxOutline.refresh), icon: const Icon(IconsaxPlusLinear.refresh),
action: () => showRefreshPopup(context, library.id, library.name), action: () => showRefreshPopup(context, library.id, library.name),
), ),
], ],
@ -113,7 +113,7 @@ class NestedNavigationDrawer extends ConsumerWidget {
offset: const Offset(-8, 0), offset: const Offset(-8, 0),
child: DrawerListButton( child: DrawerListButton(
label: context.localized.settings, label: context.localized.settings,
selectedIcon: const Icon(IconsaxBold.setting_3), selectedIcon: const Icon(IconsaxPlusBold.setting_3),
selected: currentLocation.contains(const SettingsRoute().routeName), selected: currentLocation.contains(const SettingsRoute().routeName),
icon: const SizedBox(width: 35, height: 35, child: SettingsUserIcon()), icon: const SizedBox(width: 35, height: 35, child: SettingsUserIcon()),
onPressed: () { onPressed: () {
@ -132,8 +132,8 @@ class NestedNavigationDrawer extends ConsumerWidget {
else else
DrawerListButton( DrawerListButton(
label: context.localized.settings, label: context.localized.settings,
selectedIcon: const Icon(IconsaxBold.setting_2), selectedIcon: const Icon(IconsaxPlusBold.setting_2),
icon: const Icon(IconsaxOutline.setting_2), icon: const Icon(IconsaxPlusLinear.setting_2),
selected: currentLocation.contains(const SettingsRoute().routeName), selected: currentLocation.contains(const SettingsRoute().routeName),
onPressed: () { onPressed: () {
switch (AdaptiveLayout.layoutModeOf(context)) { switch (AdaptiveLayout.layoutModeOf(context)) {

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
@ -28,7 +28,7 @@ class FullScreenButton extends ConsumerWidget {
return IconButton( return IconButton(
onPressed: () => toggleFullScreen(ref), onPressed: () => toggleFullScreen(ref),
icon: Icon( icon: Icon(
fullScreen ? IconsaxOutline.screenmirroring : IconsaxOutline.maximize_4, fullScreen ? IconsaxPlusLinear.screenmirroring : IconsaxPlusLinear.maximize_4,
), ),
); );
} }

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:universal_html/html.dart' as html; import 'package:universal_html/html.dart' as html;
@ -37,7 +37,7 @@ class FullScreenButton extends ConsumerWidget {
return IconButton( return IconButton(
onPressed: () => toggleFullScreen(ref), onPressed: () => toggleFullScreen(ref),
icon: Icon( icon: Icon(
fullScreen ? IconsaxOutline.screenmirroring : IconsaxOutline.maximize_4, fullScreen ? IconsaxPlusLinear.screenmirroring : IconsaxPlusLinear.maximize_4,
), ),
); );
} }

View file

@ -1,4 +1,4 @@
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart'; import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/util/adaptive_layout.dart'; import 'package:fladder/util/adaptive_layout.dart';
import 'package:fladder/util/disable_keypad_focus.dart'; import 'package:fladder/util/disable_keypad_focus.dart';
@ -124,7 +124,7 @@ class _HorizontalListState extends ConsumerState<HorizontalList> {
curve: Curves.easeInOut); curve: Curves.easeInOut);
}, },
icon: const Icon( icon: const Icon(
IconsaxOutline.arrow_left_2, IconsaxPlusLinear.arrow_left_2,
size: 20, size: 20,
)), )),
), ),
@ -155,7 +155,7 @@ class _HorizontalListState extends ConsumerState<HorizontalList> {
curve: Curves.easeInOut); curve: Curves.easeInOut);
}, },
icon: const Icon( icon: const Icon(
IconsaxOutline.arrow_right_3, IconsaxPlusLinear.arrow_right_3,
size: 20, size: 20,
)), )),
), ),

View file

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:async/async.dart'; import 'package:async/async.dart';
import 'package:ficonsax/ficonsax.dart'; import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:square_progress_indicator/square_progress_indicator.dart'; import 'package:square_progress_indicator/square_progress_indicator.dart';
@ -160,7 +160,7 @@ class _ProgressFloatingButtonState extends ConsumerState<ProgressFloatingButton>
strokeWidth: 4, strokeWidth: 4,
value: timeLeft.inMilliseconds / timer._duration.inMilliseconds, value: timeLeft.inMilliseconds / timer._duration.inMilliseconds,
), ),
Icon(isActive ? IconsaxBold.pause : IconsaxBold.play) Icon(isActive ? IconsaxPlusBold.pause : IconsaxPlusBold.play)
], ],
), ),
), ),

View file

@ -502,14 +502,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.3" version: "2.1.3"
ficonsax:
dependency: "direct main"
description:
name: ficonsax
sha256: f7c69817fb4a9a8545ed66656990d4634adad61b2b8d601fb91ba99d389fad47
url: "https://pub.dev"
source: hosted
version: "0.0.3"
file: file:
dependency: transitive dependency: transitive
description: description:
@ -890,6 +882,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
iconsax_plus:
dependency: "direct main"
description:
name: iconsax_plus
sha256: e9e51b0652a1d3ceea5fedbfc2c1bb4ad432c2ceb7be7de2e30caf085678933c
url: "https://pub.dev"
source: hosted
version: "1.0.0"
image: image:
dependency: transitive dependency: transitive
description: description:

View file

@ -37,7 +37,7 @@ dependencies:
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
# Icons # Icons
cupertino_icons: ^1.0.8 cupertino_icons: ^1.0.8
ficonsax: ^0.0.3 iconsax_plus: ^1.0.0
# Network and HTTP # Network and HTTP
chopper: ^8.0.4 chopper: ^8.0.4