Start Debugging

Etiqueta: how-to

74 posts · Página1de8

Cómo llamar a la API de OpenAI desde una app web de Flutter sin exponer la clave de API
Todo lo que compilas en una build web de Flutter, incluidos los valores de --dart-define, llega al navegador en texto plano. El único patrón seguro es un pequeño proxy de backend que guarda la clave, autentica al usuario, fija el modelo y devuelve el SSE de la Responses API en streaming. Proxy completo con Dart shelf y cliente Flutter, probado con Flutter 3.44, Dart 3.12 y http 1.6.
2026-10-25 flutterdartios
Cómo bloquear la orientación de una sola pantalla en Flutter (y por qué el multitarea del iPad la ignora)
Bloquea una ruta de Flutter en horizontal o vertical con SystemChrome.setPreferredOrientations sin romper el resto de la app: un bloqueo basado en pila que sobrevive a pushReplacement y se restaura al hacer pop, por qué la lista vacía es el reinicio equivocado, por qué el multitarea del iPad y las pantallas grandes de Android 16 ignoran el bloqueo, y qué significa UIRequiresFullScreen después de iPadOS 26 y el SDK de iOS 27. Probado en Flutter 3.47.8 con Dart 3.13.7 y Xcode 27.1.
Cómo marcar la respuesta de una acción de controlador como anulable en el documento OpenAPI integrado de ASP.NET Core
Microsoft.AspNetCore.OpenApi solo marca una respuesta como anulable cuando la acción devuelve un T? simple (y, en .NET 10, ni siquiera con Task<T?>). ActionResult<T?> e IActionResult pierden la anotación tanto en .NET 10 como en .NET 11 RC2. Aquí está el porqué, un transformador de operación probado que lo arregla y la trampa del 204 No Content que hace que la especificación mienta si no cambias también el formatter de MVC.
2026-10-19 flutterdarttheming
Cómo definir design tokens personalizados con ThemeExtension y animarlos entre los temas claro y oscuro en Flutter
Crea una subclase de ThemeExtension, registra una instancia por ThemeData mediante la lista extensions, léela con Theme.of(context).extension<T>() y escribe un lerp real para que el AnimatedTheme de MaterialApp interpole tus tokens durante el cambio entre claro y oscuro. Cubre colores, radios, sombras, estilos de texto y booleanos, el fallo por extensión ausente, la trampa de copyWith que descarta todas las demás extensiones y por qué necesitas == y hashCode, todo verificado con pruebas de widgets en Flutter 3.44.8.
Cómo hacer que AnimatedSwitcher anime cuando el tipo del widget hijo no cambia en Flutter
AnimatedSwitcher solo hace una transición cuando Widget.canUpdate indica que el nuevo hijo es un widget distinto, así que de Text a Text sin key simplemente se actualiza en su lugar. Aquí está la solución de una línea, dónde debe ir la key, por qué UniqueKey es una trampa, el error de dirección del slide causado por un transitionBuilder estático y el salto de layout del Stack por defecto, todo verificado con widget tests en Flutter 3.44.8.
2026-10-19 flutterdartandroid
Cómo restaurar el estado de la interfaz tras la muerte del proceso en Android con Flutter y RestorationMixin
Android mata las apps de Flutter en segundo plano para recuperar memoria, y cuando el usuario regresa cada StatefulWidget empieza desde cero. Así se activa la restauración con restorationScopeId, RestorationMixin y las propiedades Restorable, cómo restaurar campos de texto, posiciones de scroll y rutas, cómo escribir un RestorableValue personalizado y cómo probarlo todo con restartAndRestore y adb, verificado en Flutter 3.44.8 y un emulador de Android 16.
2026-10-18 dartflutterstreams
Cómo reemitir el último valor a los suscriptores tardíos de un Stream de Dart sin el BehaviorSubject de rxdart
Un StreamController broadcast descarta todos los eventos que ocurrieron antes de que te suscribieras. Aquí tienes un reemplazo de BehaviorSubject sin dependencias basado en Stream.multi, una extensión replayLatest() para streams existentes, el atajo con async* que pierde eventos en silencio y el detalle de initialData en StreamBuilder, todo verificado en Dart 3.12.2.
Cómo descartar las pulsaciones de teclas en búfer antes de Console.ReadKey en un bucle de juego de consola en C#
Vacía el búfer de entrada de la consola con while (Console.KeyAvailable) Console.ReadKey(true) antes de esperar una tecla nueva, y vacíalo en cada fotograma de un bucle de juego para que la repetición de teclas no se acumule. Cómo funciona el búfer en Windows y Unix en .NET 10, por qué las teclas mantenidas generan retraso, la trampa del eco en Unix y FlushConsoleInputBuffer.
Siguiente