Usando JavaScript en Flutter…!!!

Boris Benalcázar
3 min readApr 22, 2024

--

Si, como lo escuchaste se puede conectar Javascript con Flutter. Con el uso de ciertos paquetes esto lo hace posible. Vamos a codear…..

Flutter / Javascript

Tabla de Contenido

Sobre el Package

Estructura del Ejemplo

Implementación

Sobre el Package

Existen varios package que podemos usar para ejecutar código JavaScript en Flutter, pero en este caso vamos a usar “js_interop”, el cual nos permitirá conexión entre las dos plataformas.

Estructura del Ejemplo

Vamos a trabajar con lo siguiente:

JavaScript

Objeto JS con 4 propiedad que sera utilizado en el ejemplo.

// Ejemplo JS archivo
window.objectFlutter = {
name: '',
surname: '',
getNameAndSurname: function() {
return this.name + ' ' + this.surname;
},
getJsonNameAndSurname: function() {
return { name: this.name, surname: this.surname };
}
}

Dart

Declaración de funciones que vamos a consumir desde Flutter.

extension type InterfaceObjectFlutter._(JSObject _) implements JSObject {
external String get name;
external set name(String name);
external String get surname;
external set surname(String name);
external String getNameAndSurname();
external JSONObject getJsonNameAndSurname();
}

Implementación

Instalación del package

 $ dart pub add js_interop

Creando archivo Javascript dentro de web/ejemplo.js

// Ejemplo JS archivo
window.objectFlutter = {
name: '',
surname: '',
getNameAndSurname: function() {
return this.name + ' ' + this.surname;
},
getJsonNameAndSurname: function() {
return { name: this.name, surname: this.surname };
}
}

Importando archivo JavaScript dentro del proyecto web/index.html.

<!-- This script adds the flutter initialization JS code -->
<script src="flutter.js" defer></script>
<!-- Agregando clase ejemplo JS code -->
<script src="ejemplo.js" defer></script>

Usando funciones en flutter main.dart.

Con este ejemplo tratamos lo siguiente:

  • Seteamos el nombre y apellido en la clase objectFlutter JavaScirpt.
  • Obtener el valor en string del nombre y apellido de la funcíon getNameAndSurname.
  • Obtenemos el nombre y usuario de un la función getJsonNameAndSurname la cual devuelve un JsonObject, para lo cual declararemos una interfaz conociendo la estructura del JSON llamada JSONObject, la cual nos retornara como parámetros tanto el nombre como el apellido.
// Importación de libreriás
import 'dart:js_interop';

// Creando clase que extendide desde la función getJsonNameAndSurname
extension type JSONObject._(JSObject _) implements JSObject {
external String get name;
external String get surname;
}

// Creando clase que va a extender el objeto de javascript (objectFlutter)
extension type InterfaceObjectFlutter._(JSObject _) implements JSObject {
external String get name;
external set name(String name);
external String get surname;
external set surname(String name);
external String getNameAndSurname();
external JSONObject getJsonNameAndSurname();
}

// Enlazando la clase con el objeto de javascript
@JS()
external InterfaceObjectFlutter get objectFlutter;

// Función principal
void main() {
// Creando objeto de la clase InterfaceObjectFlutter
var object = objectFlutter;
// Asignando valores a las propiedades del objeto
object.name = 'Boris';
object.surname = 'Benalcazar';

// Imprimiendo en consola el nombre y apellido
print("Hola ${object.getNameAndSurname()} \n\n\n\n");

// Imprimiendo en consola el nombre y apellido desde JSON
print("Hola ${object.getJsonNameAndSurname().name} desde JSON\n\n\n\n");
}

Conclusión

En la actualidad podemos integrar cualquier tipo de función JavaScript dentro de Flutter, con el package que hemos usado o con otros disponibles en el mercado.

--

--