import 'package:flutter/material.dart'; import 'package:country_picker/country_picker.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:fluffychat/config/routes.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/utils/firebase_analytics.dart'; import 'package:fluffychat/pangea/learning_settings/utils/locale_provider.dart'; import 'package:fluffychat/widgets/app_lock.dart'; import 'package:fluffychat/widgets/theme_builder.dart'; import '../config/app_config.dart'; import '../utils/custom_scroll_behaviour.dart'; import 'matrix.dart'; class FluffyChatApp extends StatelessWidget { final Widget? testWidget; final List clients; final String? pincode; final SharedPreferences store; const FluffyChatApp({ super.key, this.testWidget, required this.clients, required this.store, this.pincode, }); /// getInitialLink may rereturn the value multiple times if this view is /// opened multiple times for example if the user logs out after they logged /// in with qr code or magic link. static bool gotInitialLink = false; // Router must be outside of build method so that hot reload does not reset // the current path. static final GoRouter router = GoRouter( routes: AppRoutes.routes, // #Pangea observers: [ GoogleAnalytics.getAnalyticsObserver(), ], // Pangea# debugLogDiagnostics: true, ); @override Widget build(BuildContext context) { return ThemeBuilder( builder: (context, themeMode, primaryColor) => MaterialApp.router( title: AppConfig.applicationName, themeMode: themeMode, theme: FluffyThemes.buildTheme(context, Brightness.light, primaryColor), darkTheme: FluffyThemes.buildTheme(context, Brightness.dark, primaryColor), scrollBehavior: CustomScrollBehavior(), // #Pangea locale: Provider.of(context).locale, // localizationsDelegates: L10n.localizationsDelegates, localizationsDelegates: const [ L10n.delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, CountryLocalizations.delegate, ], // Pangea# supportedLocales: L10n.supportedLocales, routerConfig: router, builder: (context, child) => AppLockWidget( pincode: pincode, clients: clients, // Need a navigator above the Matrix widget for // displaying dialogs child: Matrix( clients: clients, store: store, child: testWidget ?? child, ), ), ), ); } }