Metadata
how-torusthuggingfaceIntroduction
I am trying to figure out how to integrate huggingface into my Flutter app. Here is my attempt at figuring that out.
Setup
Pre-requisites
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
brew install llvm
rustup target add aarch64-apple-ios x86_64-apple-ios
rustup target add aarch64-apple-ios-sim
Rust
cargo install flutter_rust_bridge_codegen cbindgen
dart pub global activate ffigen
# if building for iOS or MacOS
cargo install cargo-xcode
flutter pub add flutter_rust_bridge
# if using Dart codegen
flutter pub add -d build_runner
flutter pub add -d freezed
flutter pub add freezed_annotation
Integrating with an existing project
Where $crate is the name of the crate. Set it by running crate=somenamehere
crate=cortex
# At the root flutter project, create a crate
cargo new --lib $crate
Add this to Cargo.toml:
[dependencies]
flutter_rust_bridge = "1"
[lib]
crate-type = ["lib", "staticlib", "cdylib"]
Then use cargo to generate an Xcode project within $crate. You will add this as a sub-project for the ios/Runner.xcodeproj.
cd $crate
cargo xcode
iOS setup
open ios/Runner.xcodeproj
Then drag the $crate/$crate.xcodeproj under the Runner folder in the Xcode sidebar.
Then click on the top Runner item in the sidebar -> Build Phases. 
Under Targets -> Runner -> Dependencies, add the $crate-staticlib . 
Under Link Binary With Libraries -> add lib$crate_static.a.
Then run:
flutter_rust_bridge_codegen \
    -r $crate/src/api.rs \
    -d lib/bridge_generated.dart \
    -c ios/Runner/bridge_generated.h
# if building for MacOS
cp ios/Runner/bridge_generated.h macos/Runner/bridge_generated.h