v1.1.23+53
All checks were successful
Flutter Schmutter / build (push) Successful in 3m40s

- bye go_router
This commit is contained in:
2025-06-12 11:39:31 +02:00
parent 16ebc51e77
commit dff9cda829
9 changed files with 173 additions and 94 deletions

View File

@ -1,5 +1,4 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:f0ckapp/screens/fullscreen_screen.dart';
import 'package:f0ckapp/widgets/end_drawer.dart';
@ -9,7 +8,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:go_router/go_router.dart';
import 'package:share_plus/share_plus.dart';
import 'package:f0ckapp/models/mediaitem_model.dart';
@ -132,7 +130,8 @@ class _DetailViewState extends ConsumerState<DetailView> {
label: Text(mediaState.tag!),
onDeleted: () {
ref.read(mediaProvider.notifier).setTag(null);
context.go('/', extra: true);
//context.push('/', extra: true);
Navigator.pushNamed(context, '/');
},
),
),
@ -148,7 +147,8 @@ class _DetailViewState extends ConsumerState<DetailView> {
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () {
context.canPop() ? context.pop() : context.go('/', extra: true);
Navigator.canPop(context) ? Navigator.pop(context) : Navigator.pushNamed(context, '/');
//context.canPop() ? context.pop() : context.go('/', extra: true);
},
),
actions: [
@ -278,7 +278,7 @@ class _DetailViewState extends ConsumerState<DetailView> {
if (tag.tag == 'sfw' || tag.tag == 'nsfw') return;
setState(() {
mediaNotifier.setTag(tag.tag);
context.go('/', extra: true);
Navigator.pushReplacementNamed(context, '/');
});
},
label: Text(tag.tag),

View File

@ -119,12 +119,19 @@ class _MediaGridState extends ConsumerState<MediaGrid> {
mediaState.mediaItems.length +
(mediaState.isLoading ? 1 : 0),
),
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 150,
crossAxisSpacing: 5,
mainAxisSpacing: 5,
childAspectRatio: 1,
),
gridDelegate: mediaState.crossAxisCount == 0
? const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 150,
crossAxisSpacing: 5,
mainAxisSpacing: 5,
childAspectRatio: 1,
)
: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: mediaState.crossAxisCount,
crossAxisSpacing: 5,
mainAxisSpacing: 5,
childAspectRatio: 1,
),
),
),
],

View File

@ -0,0 +1,106 @@
import 'package:flutter/material.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:f0ckapp/providers/media_provider.dart';
import 'package:f0ckapp/widgets/end_drawer.dart';
class SettingsPage extends ConsumerStatefulWidget {
const SettingsPage({super.key});
@override
ConsumerState<SettingsPage> createState() => _SettingsPageState();
}
class _SettingsPageState extends ConsumerState<SettingsPage> {
int _columns = 3;
bool _drawerSwipeEnabled = true;
@override
Widget build(BuildContext context) {
final MediaState mediaState = ref.watch(mediaProvider);
final MediaNotifier mediaNotifier = ref.read(mediaProvider.notifier);
return Scaffold(
endDrawerEnableOpenDragGesture: _drawerSwipeEnabled,
endDrawer: EndDrawer(ref: ref),
body: CustomScrollView(
slivers: [
SliverAppBar(
floating: false,
pinned: true,
title: const Text('Settings'),
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () {
Navigator.canPop(context) ? Navigator.pop(context) : Navigator.pushReplacementNamed(context, '/');
},
),
),
SliverList(
delegate: SliverChildListDelegate([
Padding(
padding: const EdgeInsets.all(16.0),
child: Text(
"Anzahl der Spalten",
style: Theme.of(context).textTheme.titleLarge,
),
),
ListTile(
title: const Text("Spaltenanzahl"),
trailing: DropdownButton<int>(
value: mediaState.crossAxisCount,
dropdownColor: const Color.fromARGB(255, 43, 43, 43),
iconEnabledColor: Colors.white,
items: [0, 3, 4, 5].map((int value) {
return DropdownMenuItem<int>(
value: value,
child: Text(value == 0 ? 'auto' : '$value Spalten'),
);
}).toList(),
onChanged: (int? newValue) {
if (newValue != null) {
setState(() {
_columns = newValue;
mediaNotifier.setCrossAxisCount(newValue);
});
}
},
),
),
const Divider(),
SwitchListTile(
title: const Text("Drawer per Geste öffnen"),
subtitle: const Text(
"Wähle, ob der Drawer mit einer Wischgeste geschlossen/ geöffnet werden kann.",
),
value: _drawerSwipeEnabled,
onChanged: (bool value) {
setState(() {
_drawerSwipeEnabled = value;
});
},
),
const Divider(),
ListTile(
title: const Text("Cache löschen"),
trailing: ElevatedButton(
onPressed: () async {
await DefaultCacheManager().emptyCache();
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Cache wurde geleert.")),
);
},
child: const Text("Löschen"),
),
),
const SizedBox(height: 20),
]),
),
],
),
);
}
}