app.dart 1.9 KB

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