105 lines
3.3 KiB
Dart
105 lines
3.3 KiB
Dart
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<MyApp> createState() => _MyAppState();
|
|
|
|
static _MyAppState of(BuildContext context) =>
|
|
context.findAncestorStateOfType<_MyAppState>()!;
|
|
}
|
|
|
|
class _MyAppState extends State<MyApp> {
|
|
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(),
|
|
),
|
|
);
|
|
}
|
|
}
|