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((ref) => TokenStorage(kApiBase)); final apiClientProvider = Provider((ref) => ApiClient( kApiBase, getAccessToken: () => ref.read(tokenStorageProvider).getValidAccessToken(), onUnauthorized: () => ref.read(tokenStorageProvider).refreshAccess(), )); final igelRepoProvider = Provider( (ref) => IgelRepository(ref.read(apiClientProvider))); final igelImagesRepoProvider = Provider((ref) => IgelImagesRepository( ref.read(apiClientProvider), getAccessToken: () => ref.read(tokenStorageProvider).getValidAccessToken(), )); class AppScrollBehavior extends MaterialScrollBehavior { @override Set 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 ); } }