Cómo hacer una recarga en caliente/reinicio al modificar el código del motor de Flutter o cualquier código de biblioteca de terceros?
Estoy depurando algunos problemas y necesito cambiar temporalmente el código de Dart del motor de Flutter (por ejemplo, agregar algunos print
a él). Logré hacerlo meses atrás, pero con Flutter 2.8 no puedo hacerlo. En otras palabras, si cambio algunas líneas de código del motor de Flutter y luego hago clic en “hot reload” o “hot restart”, ese nuevo código no se implementa.
Esto también sucede cuando trato de modificar el código de terceros de la dependencia pub.
(Por supuesto, no cambiaré el código permanentemente. Es solo un enfoque de depuración.)
¡Gracias por cualquier sugerencia!
EDITAR
Aquí están los detalles de la página de configuración.
Imagen: enlace a la imagen
davy.ai
Solución:
Para poder modificar temporalmente el código Dart del motor de Flutter con fines de depuración, debes establecer la bandera
--local-engine
mientras ejecutas tu proyecto de Flutter. Esta bandera le indica a la herramienta de Flutter que utilice el motor local en lugar del motor precompilado que viene con el SDK de Flutter.Para establecer la bandera
--local-engine
, sigue estos pasos:git clone https://github.com/flutter/engine.git
cd engine
./flutter/tools/gn --unoptimized
./flutter/tools/build.py
--local-engine
, apuntando a la ruta del motor clonado:Nota: la bandera
host_debug_unopt
especifica la configuración de compilación del motor.Ahora puedes modificar el código Dart del motor de Flutter en la carpeta
flutter/runtime
del repositorio clonado, o modificar el código de terceros de la dependenciapub
.Después de realizar cambios, haz clic en “hot reload” o “hot restart” para que los cambios surtan efecto.
Con estos pasos, deberías poder modificar temporalmente el código Dart del motor de Flutter con fines de depuración.
En cuanto al problema de no poder modificar el código usando este enfoque con Flutter 2.8, es posible que haya cambios en las configuraciones de compilación o las banderas requeridas para esta versión. Sin embargo, los pasos anteriores deberían funcionar para la mayoría de las versiones de Flutter.