71 lines
2.2 KiB
Dart
71 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'dart:ui' show PointerDeviceKind;
|
|
import 'app_router.dart';
|
|
import 'features/auth/data/token_storage.dart';
|
|
import 'shared/api_client.dart';
|
|
import 'features/igel/data/igel_repository.dart';
|
|
import 'features/igel/data/igel_images_repository.dart';
|
|
|
|
const kApiBase = String.fromEnvironment(
|
|
'API_BASE',
|
|
defaultValue: 'https://api.windesign.at/hedgehogs.php?r=',
|
|
);
|
|
|
|
const kBuildNumber = String.fromEnvironment(
|
|
'BUILD_NUMBER',
|
|
defaultValue: '2026.06.26.1',
|
|
);
|
|
|
|
final tokenStorageProvider =
|
|
Provider<TokenStorage>((ref) => TokenStorage(kApiBase));
|
|
final apiClientProvider = Provider<ApiClient>((ref) => ApiClient(
|
|
kApiBase,
|
|
getAccessToken: () =>
|
|
ref.read(tokenStorageProvider).getValidAccessToken(),
|
|
onUnauthorized: () => ref.read(tokenStorageProvider).refreshAccess(),
|
|
));
|
|
final igelRepoProvider = Provider<IgelRepository>(
|
|
(ref) => IgelRepository(ref.read(apiClientProvider)));
|
|
final igelImagesRepoProvider =
|
|
Provider<IgelImagesRepository>((ref) => IgelImagesRepository(
|
|
ref.read(apiClientProvider),
|
|
getAccessToken: () =>
|
|
ref.read(tokenStorageProvider).getValidAccessToken(),
|
|
));
|
|
|
|
class AppScrollBehavior extends MaterialScrollBehavior {
|
|
@override
|
|
Set<PointerDeviceKind> get dragDevices => {
|
|
PointerDeviceKind.touch,
|
|
PointerDeviceKind.mouse,
|
|
PointerDeviceKind.stylus,
|
|
PointerDeviceKind.trackpad,
|
|
PointerDeviceKind.unknown,
|
|
};
|
|
|
|
// Disable automatic Scrollbar wrapping; use explicit Scrollbars where needed.
|
|
@override
|
|
Widget buildScrollbar(
|
|
BuildContext context, Widget child, ScrollableDetails details) {
|
|
return child;
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
runApp(const ProviderScope(child: IgelApp()));
|
|
}
|
|
|
|
class IgelApp extends ConsumerWidget {
|
|
const IgelApp({super.key});
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
return MaterialApp.router(
|
|
title: 'Igel',
|
|
routerConfig: buildRouter(),
|
|
theme: ThemeData(useMaterial3: true),
|
|
scrollBehavior: AppScrollBehavior(), // ⬅️ wichtig für Web/Desktop
|
|
);
|
|
}
|
|
}
|