Actualmente estoy usando el siguiente paquete donde el archivo Léame ilustra lo siguiente
final bool loaded = await JsIsolatedWorker().importScripts(['test.js']);Estoy usando el paquete de trabajo aislado para que mi código pueda funcionar en la web y fuera de la web. Me gustaría generar código javascript a partir de mi código dart. Tengo un archivo con una función de nivel superior y uso
dart compile js -O0 -o test.js test.dartque encontré aquí
https://dart.dev/tools/dart2js
este es mi archivo de dardos
void main(List<String> args) { doComputation(''); } String doComputation(String input) { return 'output'; }Puedo generar javascript solo si tengo una función principal, pero esto genera un archivo de javascript donde doComutation no es una función de nivel superior, por lo que no estoy seguro de si el paquete puede llamar a la función. Parece que genera un programa completo en lugar de solo generar una función.
El archivo generado es demasiado largo para publicar
Así que mi pregunta se reduce a esto. ¿Hay alguna manera de generar javascript desde dart para 1 función con sus dependencias incluidas en lugar de tener que generar todo el programa? Para que pueda llamar a esta función desde dart.
Puede usar el paquete js para llamar a las API de JavaScript desde el código Dart, o viceversa. Para hacer que una función de Dart se pueda llamar desde JavaScript por nombre, use un setter anotado con @JS() .
@JS() library callable_function; import 'package:js/js.dart'; /// Allows assigning a function to be callable from `window.functionName()` @JS('functionName') external set _functionName(void Function() f); /// Allows calling the assigned function from Dart as well. @JS() external void functionName(); void _someDartFunction() { print('Hello from Dart!'); } void main() { _functionName = allowInterop(_someDartFunction); } El código JavaScript ahora puede llamar a functionName() o window.functionName() .
Consulte google chartjs https://github.com/google/chartjs.dart/tree/master/example para ver un ejemplo completo.
De dart2js "Ayudando a dart2js a generar un mejor código" hay un consejo:
No se preocupe por el tamaño de las bibliotecas incluidas de su aplicación. El compilador dart2js realiza la sacudida del árbol para omitir clases, funciones, métodos, etc. Simplemente importe las bibliotecas que necesita y deje que dart2js se deshaga de lo que no necesita.
Relacionado con esta publicación https://stackoverflow.com/a/21124252/3733730 .
Puede hacer esto en su lugar usando el paquete dart2js
uno crea un programa para tu main.dart dart2js donde está la función o el comando que querías hacer, luego crea un archivo dart separado a la función que querías llamar, y solucionará tu problema, es un archivo separado pero solo ejecute una función que necesitaba para hacerlo y ese es el archivo separado