Solucionado el error de eliminacion del componente

This commit is contained in:
Abraham
2025-07-25 14:10:28 -07:00
parent 1d513ab1a8
commit 264987e0cc
6 changed files with 2363 additions and 226 deletions

View File

@@ -35,10 +35,28 @@ class EmpresasNegociosProvider extends ChangeNotifier {
String? empresaSeleccionadaId;
Empresa? empresaSeleccionada;
// Variable para controlar si el provider está activo
bool _isDisposed = false;
EmpresasNegociosProvider() {
getEmpresas();
}
@override
void dispose() {
_isDisposed = true;
busquedaEmpresaController.dispose();
busquedaNegocioController.dispose();
super.dispose();
}
// Método seguro para notificar listeners
void _safeNotifyListeners() {
if (!_isDisposed) {
notifyListeners();
}
}
// Métodos para empresas
Future<void> getEmpresas([String? busqueda]) async {
try {
@@ -56,7 +74,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
.toList();
_buildEmpresasRows();
notifyListeners();
_safeNotifyListeners();
} catch (e) {
print('Error en getEmpresas: ${e.toString()}');
}
@@ -105,7 +123,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
.toList();
_buildNegociosRows();
notifyListeners();
_safeNotifyListeners();
} catch (e) {
print('Error en getNegociosPorEmpresa: ${e.toString()}');
}
@@ -164,7 +182,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
logoToUpload = picker.files.single.bytes;
// Notificar inmediatamente después de seleccionar
notifyListeners();
_safeNotifyListeners();
}
}
@@ -186,7 +204,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
imagenToUpload = picker.files.single.bytes;
// Notificar inmediatamente después de seleccionar
notifyListeners();
_safeNotifyListeners();
}
}
@@ -297,7 +315,10 @@ class EmpresasNegociosProvider extends ChangeNotifier {
// Luego eliminar la empresa
await supabaseLU.from('empresa').delete().eq('id', empresaId);
await getEmpresas();
// Solo actualizar si el provider sigue activo
if (!_isDisposed) {
await getEmpresas();
}
return true;
} catch (e) {
print('Error en eliminarEmpresa: ${e.toString()}');
@@ -309,7 +330,8 @@ class EmpresasNegociosProvider extends ChangeNotifier {
try {
await supabaseLU.from('negocio').delete().eq('id', negocioId);
if (empresaSeleccionadaId != null) {
// Solo actualizar si el provider sigue activo y hay una empresa seleccionada
if (!_isDisposed && empresaSeleccionadaId != null) {
await getNegociosPorEmpresa(empresaSeleccionadaId!);
}
return true;
@@ -324,7 +346,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
empresaSeleccionadaId = empresaId;
empresaSeleccionada = empresas.firstWhere((e) => e.id == empresaId);
getNegociosPorEmpresa(empresaId);
notifyListeners();
_safeNotifyListeners();
}
void resetFormData() {
@@ -332,7 +354,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
imagenFileName = null;
logoToUpload = null;
imagenToUpload = null;
notifyListeners();
_safeNotifyListeners();
}
void buscarEmpresas(String busqueda) {