- fixed: duplicates on the frontpage - new: search by tag
This commit is contained in:
@ -56,13 +56,13 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
try {
|
||||
await ref.read(mediaProvider.notifier).loadMedia();
|
||||
} catch (e) {
|
||||
_showError("Fehler beim Laden der Medien: $e");
|
||||
_showMsg("Fehler beim Laden der Medien: $e");
|
||||
} finally {
|
||||
setState(() => isLoading = false);
|
||||
}
|
||||
}
|
||||
|
||||
void _showError(String message) {
|
||||
void _showMsg(String message) {
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context)
|
||||
..removeCurrentSnackBar()
|
||||
@ -70,15 +70,15 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
}
|
||||
|
||||
Future<void> _downloadMedia() async {
|
||||
final mediaState = ref.read(mediaProvider);
|
||||
final currentItem = mediaState.mediaItems[_currentIndex];
|
||||
final MediaState mediaState = ref.read(mediaProvider);
|
||||
final MediaItem currentItem = mediaState.mediaItems[_currentIndex];
|
||||
|
||||
if (Platform.isAndroid || Platform.isIOS) {
|
||||
var status = await Permission.storage.status;
|
||||
PermissionStatus status = await Permission.storage.status;
|
||||
if (!status.isGranted) {
|
||||
status = await Permission.storage.request();
|
||||
if (!status.isGranted) {
|
||||
_showError("Speicherberechtigung wurde nicht erteilt.");
|
||||
_showMsg("Speicherberechtigung wurde nicht erteilt.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -86,17 +86,17 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
|
||||
String localPath;
|
||||
if (Platform.isAndroid) {
|
||||
final directory = await getExternalStorageDirectory();
|
||||
final Directory? directory = await getExternalStorageDirectory();
|
||||
localPath = "${directory!.path}/Download/fApp";
|
||||
} else if (Platform.isIOS) {
|
||||
final directory = await getApplicationDocumentsDirectory();
|
||||
final Directory directory = await getApplicationDocumentsDirectory();
|
||||
localPath = directory.path;
|
||||
} else {
|
||||
final directory = await getTemporaryDirectory();
|
||||
final Directory directory = await getTemporaryDirectory();
|
||||
localPath = directory.path;
|
||||
}
|
||||
|
||||
final savedDir = Directory(localPath);
|
||||
final Directory savedDir = Directory(localPath);
|
||||
if (!await savedDir.exists()) {
|
||||
await savedDir.create(recursive: true);
|
||||
}
|
||||
@ -111,10 +111,10 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
);
|
||||
|
||||
if (mounted) {
|
||||
_showError('Download gestartet: ${currentItem.mediaUrl}');
|
||||
_showMsg('Download gestartet: ${currentItem.mediaUrl}');
|
||||
}
|
||||
} catch (e) {
|
||||
_showError('Download fehlgeschlagen: $e');
|
||||
_showMsg('Download fehlgeschlagen: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,11 +126,10 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final mediaState = ref.watch(mediaProvider);
|
||||
final MediaState mediaState = ref.watch(mediaProvider);
|
||||
final int itemIndex = mediaState.mediaItems.indexWhere(
|
||||
(item) => item.id == widget.initialItemId,
|
||||
);
|
||||
print('itemIndex: ${itemIndex}; initial: ${widget.initialItemId}');
|
||||
|
||||
if (itemIndex == -1) {
|
||||
Future.microtask(() {
|
||||
@ -168,7 +167,7 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
IconButton(
|
||||
icon: const Icon(Icons.fullscreen),
|
||||
onPressed: () {
|
||||
_showError('download ist wip');
|
||||
_showMsg('fullscreen ist wip');
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
@ -261,7 +260,7 @@ class _DetailViewState extends ConsumerState<DetailView> {
|
||||
}
|
||||
|
||||
Widget _buildMediaItem(MediaItem item, bool isActive) {
|
||||
final mediaNotifier = ref.read(mediaProvider.notifier);
|
||||
final MediaNotifier mediaNotifier = ref.read(mediaProvider.notifier);
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
|
@ -7,6 +7,7 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:f0ckapp/providers/media_provider.dart';
|
||||
import 'package:f0ckapp/utils/appversion_util.dart';
|
||||
import 'package:f0ckapp/providers/theme_provider.dart';
|
||||
import 'package:f0ckapp/utils/customsearchdelegate_util.dart';
|
||||
|
||||
const List<String> mediaTypes = ["alles", "image", "video", "audio"];
|
||||
const List<String> mediaModes = ["sfw", "nsfw", "untagged", "all"];
|
||||
@ -78,6 +79,17 @@ class _MediaGridState extends ConsumerState<MediaGrid> {
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: Icon(Icons.search),
|
||||
onPressed: () {
|
||||
showSearch(
|
||||
context: context,
|
||||
delegate: CustomSearchDelegate(),
|
||||
);
|
||||
//mediaNotifier.setTag('drachenlord');
|
||||
//_scrollController.jumpTo(0);
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
mediaState.random ? Icons.shuffle_on_outlined : Icons.shuffle,
|
||||
|
Reference in New Issue
Block a user