import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:nethive_neo/helpers/scroll_behavior.dart'; import 'package:nethive_neo/internationalization/internationalization.dart'; import 'package:nethive_neo/router/router.dart'; import 'package:nethive_neo/theme/theme.dart'; import 'package:provider/provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:nethive_neo/providers/user_provider.dart'; import 'package:nethive_neo/providers/visual_state_provider.dart'; import 'package:nethive_neo/providers/users_provider.dart'; import 'package:nethive_neo/providers/nethive/empresas_negocios_provider.dart'; import 'package:nethive_neo/providers/nethive/componentes_provider.dart'; import 'package:nethive_neo/helpers/globals.dart'; import 'package:url_strategy/url_strategy.dart'; import 'package:nethive_neo/helpers/constants.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); setPathUrlStrategy(); await Supabase.initialize( url: supabaseUrl, anonKey: anonKey, realtimeClientOptions: const RealtimeClientOptions( eventsPerSecond: 2, ), ); supabaseLU = SupabaseClient(supabaseUrl, anonKey, schema: 'nethive'); await initGlobals(); GoRouter.optionURLReflectsImperativeAPIs = true; runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => UserState()), ChangeNotifierProvider( create: (context) => VisualStateProvider(context)), ChangeNotifierProvider(create: (_) => UsersProvider()), ChangeNotifierProvider(create: (_) => EmpresasNegociosProvider()), ChangeNotifierProvider(create: (_) => ComponentesProvider()), ], child: const MyApp(), ), ); } class MyApp extends StatefulWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. @override State createState() => _MyAppState(); static _MyAppState of(BuildContext context) => context.findAncestorStateOfType<_MyAppState>()!; } class _MyAppState extends State { Locale _locale = const Locale('es'); ThemeMode _themeMode = AppTheme.themeMode; void setLocale(Locale value) => setState(() => _locale = value); void setThemeMode(ThemeMode mode) => setState(() { _themeMode = mode; AppTheme.saveThemeMode(mode); }); @override Widget build(BuildContext context) { return Portal( child: MaterialApp.router( title: 'NETHIVE', debugShowCheckedModeBanner: false, locale: _locale, localizationsDelegates: const [ AppLocalizationsDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [Locale('en', 'US')], theme: ThemeData( brightness: Brightness.light, dividerColor: Colors.grey, ), darkTheme: ThemeData( brightness: Brightness.dark, dividerColor: Colors.grey, ), themeMode: _themeMode, routerConfig: router, scrollBehavior: MyCustomScrollBehavior(), ), ); } }