Skip to main content
Estos componentes son composiciones de la documentación, creadas con Flutter y controles Issel. Sus nombres no forman parte de los exports del paquete. Cada bloque es un archivo completo; puedes incorporarlos a una feature o a commons/widgets cuando varias funcionalidades los compartan.

Superficie principal o anidada

Ubica TaskSurface(nested: false) directamente sobre el Scaffold. Dentro de esa superficie, nested: true crea la capa surfaceContainer. Un campo dentro del bloque anidado vuelve a surface.
Es una pieza de layout y puede usar Flutter estándar. La integración con el paquete la realiza la pantalla que contiene controles Issel. No agregues un control sólo para cambiar la apariencia de esta superficie.

Página que utiliza el espacio disponible

El LayoutBuilder necesita el viewport acotado de un Scaffold.body o equivalente. Se resta exactamente la suma del padding vertical antes de calcular la altura mínima. El contenido grande puede seguir creciendo y desplazándose.
No coloques Expanded vertical como hijo directo de su contenido desplazable. Una tabla necesita su propio SizedBox(height: ...). El breakpoint y máximo son defaults de esta composición local, no de todos los widgets Issel.

Dos secciones alineadas

Utiliza altura intrínseca para pequeños grupos estáticos. No la impongas a grandes listas o viewports que no pueden calcular dimensiones intrínsecas. Si ambas zonas tienen filas equivalentes de controles, iguala también sus alturas internas cuando sea necesario.

Panel de vacío o error

El encabezado se explica con texto; un icono decorativo no es necesario. La acción existe sólo cuando tiene un callback real. Usa nested: true si el panel está dentro de otra superficie principal.

Estado de recurso

La feature calcula phase a partir de su controlador. Este componente no realiza consultas ni transforma fallos técnicos. Su carga incorpora semántica textual; personaliza también los estados vacío/error según la tarea.

Acción de guardar

El bloqueo visual se acompaña de protección en el controlador, como en el formulario de clientes. Este componente recibe el estado; no genera un segundo estado de guardado.

Búsqueda local real

La búsqueda vuelve a filtrar la colección completa en cada edición. Se omite maxItemsToShow para que todas las coincidencias se construyan y puedan desplazarse. Al seleccionar se restaura la colección; el botón secundario permite reiniciar también una búsqueda cerrada sin selección.
El filtrado básico no elimina acentos: mé coincide con México y me puede no hacerlo. Implementa normalización si es requisito del producto. El campo interno de búsqueda se destruye al cerrar el desplegable; no presupongas que el paquete persista o reinicie el estado de tu consulta externa.

Tabla amplia y lista móvil

Esta composición recibe datos de demostración y un callback; no hace consultas. La tabla usa una altura fija configurable y columnas con celdas cortas. En móvil cambia a filas legibles.
Los defaults de color de este ejemplo corresponden a una tabla o lista sobre el fondo del Scaffold. Si la anidas en una superficie existente, adapta tabla y celdas a la alternancia. IsselTableWidget construye todas las filas; para grandes volúmenes evalúa paginación o una lista virtualizada del producto.

Reutilizar los ejemplos

Estos bloques pueden convertirse después en tus componentes de ejemplo. Conserva sus imports, datos y callbacks, adapta los nombres a tu aplicación y comprueba cada composición en claro/oscuro y anchos reducido/amplio. Sus APIs pertenecen a estos ejemplos; las APIs exportadas por el paquete están en la referencia.