- bye go_router
This commit is contained in:
@ -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),
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
106
lib/screens/settings_screen.dart
Normal file
106
lib/screens/settings_screen.dart
Normal 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),
|
||||
]),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user