Files
chat/client/flutter/lib/main.dart
2026-04-25 16:36:34 +08:00

59 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sales_chat/providers/auth_provider.dart';
import 'package:sales_chat/providers/chat_provider.dart';
import 'package:sales_chat/providers/invite_provider.dart';
import 'package:sales_chat/providers/stats_provider.dart';
import 'package:sales_chat/theme/app_theme.dart';
import 'package:sales_chat/pages/login_page.dart';
import 'package:sales_chat/pages/register_page.dart';
import 'package:sales_chat/pages/home_page.dart';
import 'package:sales_chat/services/api_service.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final apiService = ApiService();
runApp(MyApp(apiService: apiService));
}
class MyApp extends StatelessWidget {
final ApiService apiService;
const MyApp({
super.key,
required this.apiService,
});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
Provider<ApiService>.value(value: apiService),
ChangeNotifierProvider(create: (_) => AuthProvider(apiService)),
ChangeNotifierProvider(create: (_) => ChatProvider(apiService)),
ChangeNotifierProvider(create: (_) => InviteProvider(apiService)),
ChangeNotifierProvider(create: (_) => StatsProvider(apiService)),
],
child: Consumer<AuthProvider>(
builder: (context, auth, _) {
return MaterialApp(
title: 'Sales Chat',
debugShowCheckedModeBanner: false,
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
themeMode: ThemeMode.light,
home: auth.isLoggedIn ? const HomePage() : const LoginPage(),
routes: {
'/login': (context) => const LoginPage(),
'/register': (context) => const RegisterPage(),
'/home': (context) => const HomePage(),
},
);
},
),
);
}
}