flutter_crud_esquemas_dynamicos_web 3.0.0 copy "flutter_crud_esquemas_dynamicos_web: ^3.0.0" to clipboard
flutter_crud_esquemas_dynamicos_web: ^3.0.0 copied to clipboard

Platformweb

A Flutter package for creating dynamic CRUD forms with customizable schemas. Build flexible, data-driven forms with BLoC state management. Web only.

flutter_crud_esquemas_dynamicos_web #

Un paquete Flutter para crear formularios CRUD dinámicos con esquemas personalizables. Construye formularios flexibles y orientados a datos con gestión de estado BLoC. Solo para Web.

Características #

  • Formularios CRUD dinámicos con esquemas personalizables
  • Gestión de estado con BLoC (flutter_bloc)
  • Constructor de formularios dinámicos con interfaz de asistente (wizard)
  • Actualizaciones de campos en tiempo real
  • Comunicación por sockets para notificaciones en tiempo real
  • Navegación con GoRouter y soporte de breadcrumbs
  • Ejecución de código eval para validaciones y acciones en runtime
  • Configuración de visibilidad de columnas en tablas
  • Selección de archivos y visualización de documentos
  • Soporte de geolocalización
  • Generación y visualización de PDFs

Instalación #

Agrega esto a tu pubspec.yaml:

dependencies:
  flutter_crud_esquemas_dynamicos_web: ^2.0.0

Luego ejecuta:

flutter pub get

Uso Básico #

Configuración Inicial #

import 'package:flutter_crud_esquemas_dynamicos_web/init_config.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Configurar la aplicación
  await InitConfig.initialize(
    clientId: 'tu_client_id',
    clientSecret: 'tu_client_secret',
    origenColeccion: 'tu_origen',
  );

  runApp(const MyApp());
}

Ejemplo de Formulario Dinámico #

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_crud_esquemas_dynamicos_web/bloc/dynamic_crud/dynamic_crud_bloc.dart';

class MiFormularioDinamico extends StatelessWidget {
  const MiFormularioDinamico({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => DynamicCrudBloc(),
      child: BlocBuilder<DynamicCrudBloc, DynamicCrudState>(
        builder: (context, state) {
          // Tu implementación de UI aquí
          return Container();
        },
      ),
    );
  }
}

Estructura del Proyecto #

El paquete está organizado de la siguiente manera:

BLoCs Principales #

  • DynamicCrudBloc: Gestiona operaciones CRUD dinámicas
  • DynamicCrudProcessBloc: Procesa y ejecuta acciones sobre colecciones
  • NavegacionBloc: Gestiona navegación y breadcrumbs
  • WizardBloc: Controla el asistente de creación de formularios
  • StreamDataBloc: Actualizaciones de campos en tiempo real
  • ConfigColumnaBloc: Configuración de visibilidad de columnas

Utilidades #

  • color_utils.dart: Conversión entre String y Color
  • utils_ui.dart: Funciones de ayuda para la interfaz
  • utils_esquema.dart: Manipulación de esquemas
  • tablas_utils.dart: Utilidades para tablas

Rutas Disponibles #

El paquete utiliza GoRouter con las siguientes rutas predefinidas:

  • /login - Autenticación
  • /inicio - Dashboard principal
  • /datosColeccion - Vista de tabla
  • /fichaColeccion - Vista de formulario detalle
  • /wizard - Asistente de creación de formularios
  • /adminFormularios - Administración de formularios
  • /adminEsquemas - Administración de esquemas
  • /adminGrupos - Administración de grupos

Sistema de Formularios Dinámicos #

Los formularios se construyen dinámicamente usando modelos de widgets:

  • widget_model.dart - Modelo base
  • data_widget_model.dart - Propiedades de campos del esquema
  • row_widget_model.dart - Layout horizontal
  • column_widget_model.dart - Layout vertical
  • wrap_widget_model.dart - Layout adaptativo

Requisitos #

  • Flutter >= 3.22.0
  • Dart SDK >= 3.9.2
  • Solo plataforma Web

Dependencias Principales #

  • flutter_bloc: ^9.1.1
  • go_router: ^16.2.4
  • equatable: ^2.0.7
  • flutter_map: ^8.2.2
  • syncfusion_flutter_pdfviewer: ^31.1.22

Licencia #

Este proyecto está licenciado bajo la Licencia Apache 2.0 - ver el archivo LICENSE para más detalles.

Copyright 2025 RobleSistemas