home_screen.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import 'package:computo_lite/views/package/package_page.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:computo_lite/widgets/widgets.dart';
  4. import 'package:provider/provider.dart';
  5. import '../../viewmodels/viewmodels.dart';
  6. class HomeScreen extends StatefulWidget {
  7. const HomeScreen({super.key});
  8. @override
  9. Formulario createState() => Formulario();
  10. }
  11. class Formulario extends State<HomeScreen> {
  12. @override
  13. void initState() {
  14. super.initState();
  15. Future(() async {
  16. await Provider.of<LoginViewModel>(context, listen: false).setValores();
  17. });
  18. }
  19. final PackageViewModel _packageViewModel = PackageViewModel();
  20. bool _loading = false;
  21. Future<void> _scanner() async {
  22. try {
  23. if (_loading) return;
  24. if (mounted) setState(() => _loading = true);
  25. Widget header = Row(
  26. children: [
  27. Icon(Icons.error),
  28. SizedBox(width: 5),
  29. Text("Aviso"),
  30. ],
  31. );
  32. Map<String, dynamic>? response = await _packageViewModel.scanner("");
  33. if (response == null ||
  34. response["resultado"] == null ||
  35. List.from(response["resultado"]).length == 0) {
  36. if (mounted) setState(() => _loading = false);
  37. await HelpersViewModel.dialog(
  38. 2,
  39. header,
  40. "No se encontro el Acta-Paquete, intenelo de nuevo.",
  41. context,
  42. "Cerrar",
  43. "Reintentar",
  44. () {}, () async {
  45. await _scanner();
  46. });
  47. return;
  48. }
  49. Map<String, dynamic>? binnacle = await _packageViewModel
  50. .getBinnacle(response["resultado"][0]["idActa"]);
  51. Navigator.push(
  52. context,
  53. MaterialPageRoute(
  54. builder: (context) => PackagePage(
  55. response["resultado"][0],
  56. binnacle != null
  57. ? List<Map<String, dynamic>>.from(binnacle["resultado"])
  58. .map((e) => ({
  59. "entradaSalida": e["entradaSalida"],
  60. "fecha": e["fecha"],
  61. "motivo": e["motivoPaquete"]["descripcion"]
  62. }))
  63. .toList()
  64. : [],
  65. response["resultado"][0]["ultimaBitacora"] != null
  66. ? response["resultado"][0]["ultimaBitacora"]
  67. ["entradaSalida"]
  68. : "E",
  69. true,
  70. response["resultado"][0]["ultimaBitacora"] != null
  71. ? response["resultado"][0]["ultimaBitacora"]
  72. ["idConsejoElectoral"]
  73. : 0,
  74. response["resultado"][0]["idTipoEleccion"])),
  75. );
  76. } catch (e) {
  77. print(e);
  78. } finally {
  79. if (mounted) setState(() => _loading = false);
  80. }
  81. }
  82. @override
  83. Widget build(BuildContext context) {
  84. String correo = Provider.of<LoginViewModel>(context).correo;
  85. return Scaffold(
  86. backgroundColor: Colors.grey.shade200,
  87. appBar: AppBar(
  88. elevation: 0,
  89. title: const Text(
  90. 'Inicio',
  91. style: TextStyle(color: Colors.white),
  92. ),
  93. iconTheme: const IconThemeData(color: Colors.white),
  94. actions: [usuarioHeader(correo)],
  95. ),
  96. drawer: AppDrawer(),
  97. body: Column(children: [
  98. const SizedBox(height: 150),
  99. Center(
  100. child: Image.asset(
  101. "assets/Elecciones2024.png",
  102. height: 150,
  103. )),
  104. const SizedBox(height: 100),
  105. Center(
  106. child: GestureDetector(
  107. onTap: _scanner,
  108. child: CircleAvatar(
  109. radius: 100,
  110. child: _loading
  111. ? CircularProgressIndicator(
  112. valueColor:
  113. new AlwaysStoppedAnimation<Color>(Colors.white),
  114. )
  115. : const Icon(
  116. Icons.camera_alt,
  117. size: 100,
  118. )),
  119. )),
  120. ]),
  121. );
  122. }
  123. }