import 'package:e2ee_chat/view/add_friend.dart'; import 'package:e2ee_chat/view/user_chat.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:provider/single_child_widget.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'common/global.dart'; import 'l10n/localization_intl.dart'; import 'presenter/locale.dart'; import 'presenter/theme.dart'; import 'presenter/login.dart'; import 'view/friend_request.dart'; import 'view/language.dart'; import 'view/login.dart'; import 'view/theme.dart'; import 'view/home.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); Global.init().then((e) => runApp(MyApp())); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider.value(value: ThemeModel()), ChangeNotifierProvider.value(value: LocaleModel()), ChangeNotifierProvider.value(value: LoginPresenter()), ], child: Consumer2( builder: (BuildContext context, themeModel, localeModel, Widget? child) { return MaterialApp( navigatorKey: Global.navigatorKey, theme: ThemeData( primarySwatch: themeModel.theme, ), home: HomeRoute(), //应用主页 locale: localeModel.locale, //我们只支持美国英语和中文简体 supportedLocales: Global.locales, localizationsDelegates: [ // 本地化的代理类 GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GmLocalizationsDelegate() ], localeResolutionCallback: (Locale? _locale, Iterable supportedLocales) { if (localeModel.locale != null) { //如果已经选定语言,则不跟随系统 return localeModel.locale; } else { Locale? locale; //APP语言跟随系统语言,如果系统语言不是中文简体或美国英语, //则默认使用美国英语 if (supportedLocales.contains(_locale)) { locale = _locale; } else { locale = Locale('en'); } return locale; } }, // 注册命名路由表 routes: { "login": (context) => LoginRoute(), "themes": (context) => ThemeRoute(), "language": (context) => LanguageRoute(), "add friend": (context) => AddFriendView(), "user chat": (context) => UserChatView(), "friend request": (context) => FriendRequestListView() }, ); }, ), ); } }