add popupAnimationStyle
This commit is contained in:
parent
0bf647ed26
commit
bdbd738f04
7 changed files with 119 additions and 86 deletions
|
|
@ -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);
|
||||
}
|
||||
}),
|
||||
],
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 !=
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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') {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
4
lib/utils/global_style.dart
Normal file
4
lib/utils/global_style.dart
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
final popupAnimationStyle =
|
||||
AnimationStyle(curve: Curves.easeInOutCubicEmphasized);
|
||||
Loading…
Reference in a new issue