Files
mileograph_flutter/lib/app.dart
2025-12-26 22:49:43 +00:00

43 lines
1.5 KiB
Dart

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/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<EndpointService>(
create: (_) => EndpointService(),
),
ProxyProvider<EndpointService, ApiService>(
update: (_, endpoint, api) {
final service = api ?? ApiService(baseUrl: endpoint.baseUrl);
service.setBaseUrl(endpoint.baseUrl);
return service;
},
create: (_) => ApiService(baseUrl: EndpointService.defaultBaseUrl),
),
ChangeNotifierProvider<AuthService>(
create: (context) => AuthService(api: context.read<ApiService>()),
),
ChangeNotifierProxyProvider<AuthService, DataService>(
create: (context) => DataService(api: context.read<ApiService>()),
update: (context, auth, data) {
data ??= DataService(api: context.read<ApiService>());
data.handleAuthChanged(auth.userId);
return data;
},
),
],
child: const MyApp(),
);
}
}