From 405c40d0b5d4b47ff50515a0ddaab384da13fa29 Mon Sep 17 00:00:00 2001 From: Abraham Date: Tue, 13 Jan 2026 18:19:57 -0800 Subject: [PATCH] =?UTF-8?q?paginador=20a=C3=B1adido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/videos/gestor_videos_page.dart | 43 ++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/lib/pages/videos/gestor_videos_page.dart b/lib/pages/videos/gestor_videos_page.dart index d05e4a7..c8cb1d7 100644 --- a/lib/pages/videos/gestor_videos_page.dart +++ b/lib/pages/videos/gestor_videos_page.dart @@ -25,6 +25,24 @@ class _GestorVideosPageState extends State { PlutoGridStateManager? _stateManager; bool _isLoading = true; + // Calcular pageSize dinámico según altura de pantalla + int _calculatePageSize(BuildContext context) { + final screenHeight = MediaQuery.of(context).size.height; + + // Altura aproximada: toolbar (~140px) + padding (~48px) + row (~80px promedio) + // Altura disponible para el grid + final availableHeight = screenHeight - 200; + + // Calcular cuántas filas caben (altura promedio de fila ~80px) + final rowsVisible = (availableHeight / 80).floor(); + + // Ajustar pageSize: mínimo 5, máximo 20 + if (rowsVisible >= 15) return 20; + if (rowsVisible >= 12) return 15; + if (rowsVisible >= 8) return 10; + return 8; // Default para resoluciones pequeñas + } + @override void initState() { super.initState(); @@ -624,7 +642,7 @@ class _GestorVideosPageState extends State { title: 'Acciones', field: 'actions', type: PlutoColumnType.text(), - width: 160, + width: 200, enableEditingMode: false, enableColumnDrag: false, enableSorting: false, @@ -669,12 +687,33 @@ class _GestorVideosPageState extends State { onLoaded: (PlutoGridOnLoadedEvent event) { _stateManager = event.stateManager; _stateManager!.setShowColumnFilter(false); + // Configurar paginación dinámica según resolución + final pageSize = _calculatePageSize(context); + _stateManager!.setPageSize(pageSize, notify: true); + }, + createFooter: (stateManager) { + return PlutoPagination(stateManager); }, configuration: PlutoGridConfiguration( - style: plutoGridStyleConfig(context), + style: plutoGridStyleConfig(context).copyWith( + // Scrollbar SIEMPRE visible y más notorio + enableGridBorderShadow: true, + gridBorderRadius: BorderRadius.circular(12), + ), + scrollbar: const PlutoGridScrollbarConfig( + // Scrollbar siempre visible + isAlwaysShown: true, + // Hacer scrollbar más grueso y notorio + scrollbarThickness: 10, + scrollbarThicknessWhileDragging: 14, + // Radio de borde para scrollbar + scrollbarRadius: Radius.circular(8), + scrollbarRadiusWhileDragging: Radius.circular(10), + ), columnSize: const PlutoGridColumnSizeConfig( autoSizeMode: PlutoAutoSizeMode.scale, ), + localeText: const PlutoGridLocaleText.spanish(), ), ); }