app.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_localizations/flutter_localizations.dart';
  3. import 'package:go_router/go_router.dart';
  4. import 'package:tdesign_flutter/tdesign_flutter.dart';
  5. import 'package:flutter_riverpod/flutter_riverpod.dart';
  6. import 'core/theme/app_theme.dart';
  7. import 'core/router/app_router.dart';
  8. import 'core/network/api_client.dart';
  9. import 'core/auth/auth_service.dart';
  10. import 'core/i18n/app_localizations.dart';
  11. import 'core/i18n/locale_provider.dart';
  12. final apiClientProvider = Provider<ApiClient>((ref) {
  13. const useMock = true;
  14. final client = ApiClient(
  15. baseUrl: 'https://your-api-host.com/api',
  16. useMock: useMock,
  17. );
  18. final authService = ref.read(authServiceProvider);
  19. client.setToken(authService.token);
  20. return client;
  21. });
  22. final authServiceProvider = Provider<AuthService>((ref) => AuthService());
  23. final _routerProvider = Provider<GoRouter>((ref) => createAppRouter());
  24. class App extends ConsumerWidget {
  25. const App({super.key});
  26. @override
  27. Widget build(BuildContext context, WidgetRef ref) {
  28. final router = ref.watch(_routerProvider);
  29. final locale = ref.watch(localeProvider);
  30. TDTheme.needMultiTheme();
  31. return MaterialApp.router(
  32. key: ValueKey(locale),
  33. title: 'TBOSS OA',
  34. theme: AppTheme.light,
  35. routerConfig: router,
  36. locale: locale,
  37. supportedLocales: const [
  38. Locale('zh', 'CN'),
  39. Locale('en'),
  40. Locale('zh', 'TW'),
  41. ],
  42. localizationsDelegates: const [
  43. AppLocalizations.delegate,
  44. GlobalMaterialLocalizations.delegate,
  45. GlobalWidgetsLocalizations.delegate,
  46. GlobalCupertinoLocalizations.delegate,
  47. ],
  48. debugShowCheckedModeBanner: false,
  49. );
  50. }
  51. }