import 'package:flutter/material.dart'; import 'package:mileograph_flutter/services/api_service.dart'; import 'package:mileograph_flutter/services/authservice.dart'; import 'package:mileograph_flutter/services/data_service.dart'; import 'package:mileograph_flutter/services/distance_unit_service.dart'; import 'package:mileograph_flutter/services/endpoint_service.dart'; import 'package:mileograph_flutter/ui/app_shell.dart'; import 'package:provider/provider.dart'; class App extends StatelessWidget { const App({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => EndpointService(), ), ChangeNotifierProvider( create: (_) => DistanceUnitService(), ), ProxyProvider( update: (_, endpoint, api) { final service = api ?? ApiService(baseUrl: endpoint.baseUrl); service.setBaseUrl(endpoint.baseUrl); return service; }, create: (_) => ApiService(baseUrl: EndpointService.defaultBaseUrl), ), ChangeNotifierProvider( create: (context) => AuthService(api: context.read()), ), ChangeNotifierProxyProvider( create: (context) => DataService(api: context.read()), update: (context, auth, data) { data ??= DataService(api: context.read()); data.handleAuthChanged(auth.userId); return data; }, ), ], child: const MyApp(), ); } }