add popupAnimationStyle

This commit is contained in:
kodjomoustapha 2024-02-20 12:57:01 +01:00
parent 0bf647ed26
commit bdbd738f04
7 changed files with 119 additions and 86 deletions

View file

@ -32,6 +32,7 @@ import 'package:mangayomi/modules/manga/detail/widgets/chapter_filter_list_tile_
import 'package:mangayomi/modules/manga/detail/widgets/chapter_sort_list_tile_widget.dart';
import 'package:mangayomi/modules/widgets/error_text.dart';
import 'package:mangayomi/modules/widgets/progress_center.dart';
import 'package:mangayomi/utils/global_style.dart';
class LibraryScreen extends ConsumerStatefulWidget {
final bool isManga;
@ -1808,37 +1809,41 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
Icons.filter_list_sharp,
color: isNotFiltering ? null : Colors.yellow,
)),
PopupMenuButton(itemBuilder: (context) {
return [
PopupMenuItem<int>(
value: 0,
child: Text(context.l10n.update_library),
),
PopupMenuItem<int>(
value: 1, child: Text(l10n.open_random_entry)),
PopupMenuItem<int>(value: 2, child: Text(l10n.import)),
];
}, onSelected: (value) {
if (value == 0) {
manga.whenData((value) {
_updateLibrary(value);
});
} else if (value == 1) {
manga.whenData((value) {
var randomManga = (value..shuffle()).first;
pushToMangaReaderDetail(
archiveId: randomManga.isLocalArchive ?? false
? randomManga.id
: null,
context: context,
lang: randomManga.lang!,
mangaM: randomManga,
source: randomManga.source!);
});
} else {
_importLocal(context, widget.isManga);
}
}),
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
itemBuilder: (context) {
return [
PopupMenuItem<int>(
value: 0,
child: Text(context.l10n.update_library),
),
PopupMenuItem<int>(
value: 1, child: Text(l10n.open_random_entry)),
PopupMenuItem<int>(
value: 2, child: Text(l10n.import)),
];
},
onSelected: (value) {
if (value == 0) {
manga.whenData((value) {
_updateLibrary(value);
});
} else if (value == 1) {
manga.whenData((value) {
var randomManga = (value..shuffle()).first;
pushToMangaReaderDetail(
archiveId: randomManga.isLocalArchive ?? false
? randomManga.id
: null,
context: context,
lang: randomManga.lang!,
mangaM: randomManga,
source: randomManga.source!);
});
} else {
_importLocal(context, widget.isManga);
}
}),
],
));
}

View file

@ -31,6 +31,7 @@ import 'package:mangayomi/sources/utils/utils.dart';
import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
import 'package:mangayomi/utils/extensions/others.dart';
import 'package:mangayomi/utils/global_style.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/modules/manga/detail/providers/isar_providers.dart';
import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart';
@ -369,6 +370,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
actions: [
if (!isLocalArchive) ...[
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
icon: const Icon(Icons.download_outlined),
itemBuilder: (context) {
return [
@ -480,39 +482,44 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
color:
isNotFiltering ? null : Colors.yellow,
)),
PopupMenuButton(itemBuilder: (context) {
return [
if (!isLocalArchive)
PopupMenuItem<int>(
value: 3, child: Text(l10n.refresh)),
if (widget.manga!.favorite!)
PopupMenuItem<int>(
value: 0,
child: Text(l10n.edit_categories)),
if (!isLocalArchive)
PopupMenuItem<int>(
value: 2, child: Text(l10n.share)),
];
}, onSelected: (value) {
if (value == 3) {
widget.checkForUpdate(true);
}
if (value == 0) {
context.push("/categories", extra: (
true,
widget.manga!.isManga! ? 0 : 1
));
} else if (value == 1) {
} else if (value == 2) {
final source = getSource(widget.manga!.lang!,
widget.manga!.source!);
String url = source!.apiUrl!.isEmpty
? widget.manga!.link!
: "${source.baseUrl}${widget.manga!.link!}";
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
itemBuilder: (context) {
return [
if (!isLocalArchive)
PopupMenuItem<int>(
value: 3,
child: Text(l10n.refresh)),
if (widget.manga!.favorite!)
PopupMenuItem<int>(
value: 0,
child: Text(l10n.edit_categories)),
if (!isLocalArchive)
PopupMenuItem<int>(
value: 2, child: Text(l10n.share)),
];
},
onSelected: (value) {
if (value == 3) {
widget.checkForUpdate(true);
}
if (value == 0) {
context.push("/categories", extra: (
true,
widget.manga!.isManga! ? 0 : 1
));
} else if (value == 1) {
} else if (value == 2) {
final source = getSource(
widget.manga!.lang!,
widget.manga!.source!);
String url = source!.apiUrl!.isEmpty
? widget.manga!.link!
: "${source.baseUrl}${widget.manga!.link!}";
Share.share(url);
}
}),
Share.share(url);
}
}),
],
);
},
@ -1756,6 +1763,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
child: Icon(Icons.save_outlined),
)),
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
itemBuilder: (context) {
return [
if (widget.manga!.customCoverImage !=

View file

@ -11,6 +11,7 @@ import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/providers/storage_provider.dart';
import 'package:mangayomi/modules/manga/download/providers/download_provider.dart';
import 'package:mangayomi/utils/global_style.dart';
import 'package:share_plus/share_plus.dart';
class ChapterPageDownload extends ConsumerStatefulWidget {
@ -112,6 +113,7 @@ class _ChapterPageDownloadState extends ConsumerState<ChapterPageDownload>
final entries = snapshot.data!;
return entries.first.isDownload!
? PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: Icon(
size: 25,
Icons.check_circle,
@ -136,6 +138,7 @@ class _ChapterPageDownloadState extends ConsumerState<ChapterPageDownload>
height: 41,
width: 35,
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: _downloadWidget(context, true),
onSelected: (value) {
if (value == 0) {
@ -160,6 +163,7 @@ class _ChapterPageDownloadState extends ConsumerState<ChapterPageDownload>
height: 41,
width: 35,
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: Stack(
children: [
Align(
@ -243,6 +247,7 @@ class _ChapterPageDownloadState extends ConsumerState<ChapterPageDownload>
height: 50,
width: 50,
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: const Icon(
Icons.error_outline_outlined,
color: Colors.red,
@ -268,6 +273,7 @@ class _ChapterPageDownloadState extends ConsumerState<ChapterPageDownload>
height: 50,
width: 50,
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: _downloadWidget(context, true),
onSelected: (value) {
if (value == 0) {

View file

@ -29,6 +29,7 @@ import 'package:mangayomi/modules/manga/reader/providers/push_router.dart';
import 'package:mangayomi/services/get_chapter_pages.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
import 'package:mangayomi/utils/extensions/others.dart';
import 'package:mangayomi/utils/global_style.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/modules/manga/reader/image_view_center.dart';
import 'package:mangayomi/modules/manga/reader/image_view_vertical.dart';
@ -1632,6 +1633,7 @@ class _MangaChapterPageGalleryState
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
color: Colors.black,
child: const Icon(
Icons.app_settings_alt_outlined,
@ -2382,6 +2384,7 @@ class CustomPopupMenuButton<T> extends StatelessWidget {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
tooltip: "",
offset: Offset.fromDirection(1),
color: Colors.black,

View file

@ -7,6 +7,7 @@ import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/download.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/utils/global_style.dart';
class DownloadQueueScreen extends ConsumerWidget {
const DownloadQueueScreen({super.key});
@ -118,6 +119,7 @@ class DownloadQueueScreen extends ConsumerWidget {
Padding(
padding: const EdgeInsets.all(8.0),
child: PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
child: const Icon(Icons.more_vert),
onSelected: (value) async {
if (value.toString() == 'Cancel') {

View file

@ -7,6 +7,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_windows_webview/flutter_windows_webview.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/http/interceptor.dart';
import 'package:mangayomi/utils/global_style.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:share_plus/share_plus.dart';
import 'package:path/path.dart' as p;
@ -175,29 +176,33 @@ class _MangaWebViewState extends ConsumerState<MangaWebView> {
}
: null,
),
PopupMenuButton(itemBuilder: (context) {
return [
PopupMenuItem<int>(
value: 0, child: Text(l10n!.refresh)),
PopupMenuItem<int>(
value: 1, child: Text(l10n.share)),
PopupMenuItem<int>(
value: 2, child: Text(l10n.open_in_browser)),
PopupMenuItem<int>(
value: 3, child: Text(l10n.clear_cookie)),
];
}, onSelected: (value) async {
if (value == 0) {
_webViewController?.reload();
} else if (value == 1) {
Share.share(_url);
} else if (value == 2) {
await InAppBrowser.openWithSystemBrowser(
url: Uri.parse(_url));
} else if (value == 3) {
CookieManager.instance().deleteAllCookies();
}
}),
PopupMenuButton(
popUpAnimationStyle: popupAnimationStyle,
itemBuilder: (context) {
return [
PopupMenuItem<int>(
value: 0, child: Text(l10n!.refresh)),
PopupMenuItem<int>(
value: 1, child: Text(l10n.share)),
PopupMenuItem<int>(
value: 2,
child: Text(l10n.open_in_browser)),
PopupMenuItem<int>(
value: 3, child: Text(l10n.clear_cookie)),
];
},
onSelected: (value) async {
if (value == 0) {
_webViewController?.reload();
} else if (value == 1) {
Share.share(_url);
} else if (value == 2) {
await InAppBrowser.openWithSystemBrowser(
url: Uri.parse(_url));
} else if (value == 3) {
CookieManager.instance().deleteAllCookies();
}
}),
],
),
),

View file

@ -0,0 +1,4 @@
import 'package:flutter/material.dart';
final popupAnimationStyle =
AnimationStyle(curve: Curves.easeInOutCubicEmphasized);