- screaming_possum.gif
This commit is contained in:
@ -1,78 +1,47 @@
|
||||
import 'package:f0ckapp/providers/theme_provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'package:f0ckapp/screens/mediagrid_screen.dart';
|
||||
import 'package:f0ckapp/screens/detailview_screen.dart';
|
||||
import 'package:f0ckapp/screens/settings_screen.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'package:f0ckapp/utils/appversion_util.dart';
|
||||
import 'package:f0ckapp/providers/theme_provider.dart';
|
||||
import 'package:f0ckapp/providers/media_provider.dart';
|
||||
import 'package:f0ckapp/services/api_service.dart';
|
||||
import 'package:f0ckapp/screens/media_grid.dart';
|
||||
import 'package:f0ckapp/screens/settings_screen.dart';
|
||||
import 'package:f0ckapp/screens/detailview_screen.dart';
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||
await AppVersion.init();
|
||||
final ThemeController themeController = Get.put(ThemeController());
|
||||
|
||||
runApp(ProviderScope(child: F0ckApp()));
|
||||
}
|
||||
final api = ApiService();
|
||||
await api.fetchMedia();
|
||||
Get.put(api);
|
||||
|
||||
class F0ckApp extends ConsumerWidget {
|
||||
const F0ckApp({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final ThemeData theme = ref.watch(themeNotifierProvider);
|
||||
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: theme,
|
||||
runApp(
|
||||
GetMaterialApp(
|
||||
theme: themeController.currentTheme.value,
|
||||
initialRoute: '/',
|
||||
routes: {
|
||||
'/': (context) => const MediaGrid(),
|
||||
'/settings': (context) => const SettingsPage(),
|
||||
},
|
||||
onGenerateRoute: (RouteSettings settings) {
|
||||
final String? name = settings.name;
|
||||
if (name == null) {
|
||||
return MaterialPageRoute(
|
||||
builder: (_) =>
|
||||
const Scaffold(body: Center(child: Text('Ungültiger Link'))),
|
||||
settings: settings,
|
||||
);
|
||||
}
|
||||
|
||||
final RegExp regExp = RegExp(
|
||||
r'^(?:/tag/(?<tag>[^/]+))?(?:/(?<mime>image|audio|video))?(?:/(?<itemid>\d+))?$',
|
||||
);
|
||||
final RegExpMatch? match = regExp.firstMatch(name);
|
||||
|
||||
if (match != null) {
|
||||
final String? tag = match.namedGroup('tag');
|
||||
final String? mime = match.namedGroup('mime');
|
||||
final String? idStr = match.namedGroup('itemid');
|
||||
final int? itemId = idStr != null ? int.tryParse(idStr) : null;
|
||||
const int preloadOffset = 50;
|
||||
|
||||
if (itemId != null) {
|
||||
return MaterialPageRoute(
|
||||
builder: (context) => DetailView(initialItemId: itemId),
|
||||
settings: settings,
|
||||
);
|
||||
}
|
||||
|
||||
return MaterialPageRoute(
|
||||
builder: (context) => const MediaGrid(),
|
||||
settings: settings,
|
||||
);
|
||||
}
|
||||
|
||||
return MaterialPageRoute(
|
||||
builder: (context) =>
|
||||
const Scaffold(body: Center(child: Text('Ungültiger Link'))),
|
||||
settings: settings,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
getPages: [
|
||||
GetPage(name: '/', page: () => MediaGrid()),
|
||||
GetPage(name: '/settings', page: () => SettingsPage()),
|
||||
GetPage(
|
||||
name: '/:itemId',
|
||||
page: () {
|
||||
int? test = int.tryParse(Get.parameters['itemId']!);
|
||||
if (test == null) {
|
||||
return Scaffold(body: Center(child: Text('oof')));
|
||||
}
|
||||
return DetailView(initialItemId: test);
|
||||
},
|
||||
),
|
||||
],
|
||||
unknownRoute: GetPage(
|
||||
name: '/notfound',
|
||||
page: () => Center(child: Text('oof')),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user