main.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:provider/provider.dart';
  4. import 'package:sqflite_common_ffi/sqflite_ffi.dart';
  5. import 'dart:io';
  6. import 'core/models/models.dart';
  7. import 'core/services/services.dart';
  8. import 'mvvm/views/home/home_screen.dart';
  9. import 'mvvm/views/login/login_screen.dart';
  10. import '/utils/themes.dart';
  11. import 'mvvm/viewmodels/viewmodels.dart';
  12. import 'package:timezone/data/latest.dart' as tzdata;
  13. void main() async {
  14. WidgetsFlutterBinding.ensureInitialized();
  15. tzdata.initializeTimeZones();
  16. // Inicialización de la base de datos para plataformas de escritorio con FFI
  17. if (Platform.isWindows || Platform.isLinux) {
  18. sqfliteFfiInit();
  19. databaseFactory = databaseFactoryFfi;
  20. }
  21. Database? db = await DatabaseService().db;
  22. final repositoryFactory = SQLiteRepositoryFactory(db!);
  23. // 3) Obtener el repositorio de Mesa
  24. final mesaRepository = repositoryFactory.getRepository<Mesa>(
  25. tableName: 'Mesa',
  26. fromMap: Mesa.fromMap,
  27. toMap: (m) => m.toMap(),
  28. );
  29. SystemChrome.setPreferredOrientations([
  30. DeviceOrientation.landscapeRight,
  31. DeviceOrientation.landscapeLeft,
  32. ]).then((_) {
  33. runApp(MultiProvider(providers: [
  34. ChangeNotifierProvider(create: (_) => LoginViewModel()),
  35. ChangeNotifierProvider(create: (_) => SucursalViewModel()),
  36. ChangeNotifierProvider(create: (_) => PermisoViewModel()),
  37. ChangeNotifierProvider(create: (_) => UsuarioViewModel()),
  38. ChangeNotifierProvider(create: (_) => ProductoViewModel()),
  39. ChangeNotifierProvider(
  40. create: (_) => MesaViewModel(mesaRepository: mesaRepository)),
  41. ChangeNotifierProvider(create: (_) => CategoriaProductoViewModel()),
  42. // Agrega aquí cualquier otro provider que necesites
  43. ], child: const MyApp()));
  44. });
  45. }
  46. class MyApp extends StatelessWidget {
  47. const MyApp({super.key});
  48. @override
  49. Widget build(BuildContext context) {
  50. return MaterialApp(
  51. locale: const Locale("en", "ES"),
  52. debugShowCheckedModeBanner: false,
  53. title: 'Turquessa',
  54. theme: AppTheme.lightTheme,
  55. initialRoute: 'login',
  56. routes: {
  57. 'login': (context) => const LoginScreen(),
  58. 'home': (context) => const HomeScreen(),
  59. },
  60. );
  61. }
  62. }