main.dart 2.9 KB

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