Calling Rust Code from Flutter: A Guide to FFI Integration
Primeramente necesitamos tener instaldo rust, en mi caso uso "cargo 1.73.0", puede usar este comando:
flutter pub get
cargo --version
Luego de ello puede clonar el proyecto y dirigirse al archivo native:
cd native
cargo install flutter_rust_bridge_codegen@1.80.1
Una vez allí necesitar usar este comandos :
cargo build
Ahora necesitamos generar los puentes :
flutter_rust_bridge_codegen -r src/api.rs -d ../lib/bridge_generated.dart --dart-decl-output ../lib/bridge_definitions.dart
Corremos est comando desde la carpeta raiz :
cargo install cargo-lipo
Luego nos vamos otra vez a a la carpeta native y corremos este comando :
cargo lipo
Lo que hara este comando es instalar las arquitecturas para correr en nuestros dipositovs IOS, ahora necesitamos copiar la arquitectura dentro de la carpeta nativa con este comando : este es el nombre del proyecto: "libflutterrustexample"
cp target/universal/debug/libflutterrustexample.a ../ios/Runner
Otra vez necesitamos correr los encabezados , lo llamamos desde la carpeta raìz:
flutter_rust_bridge_codegen -r native/src/api.rs -d lib/bridge_generated.dart --dart-decl-output lib/bridge_definitions.dart -c ios/Runner/bridge_generated.h
Ojo le saldra un error en el archivo: bridge_generated.dart
lo que tiene que hacer es lo siguiente:
y con eso ya esta solucionado. Ya podrá correr el codigo
flutter run
En nuestro caso el codigo de Rust lo que hace es generar y representar un fractal conocido como el "árbol de Barnsley" utilizando el sistema de funciones iteradas de Barnsley
Aunque aquì obviamos varios pasos importantes, lo que hacemos es una muestra rápido de como poder llamar còdigo Rust desde Flutter o viceversa, por el momento solo està configurado para IOS y probado en dispositivo real. Si desea configuar su propio proyecto puede guiarse de este tutorial:
- https://www.youtube.com/@drunisadev
- Lab: Write your first Flutter app
- Cookbook: Useful Flutter samples
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.