【Flutter】flutter_rust_bridgeでメモリセーフなバインディングを生成

Flutter

flutter_rust_bridgeとは

flutter_rust_bridgeは、Flutter/DartとRustの間で高レベルでメモリセーフなバインディングを生成するパッケージです。

flutter_rust_bridge | Dart package
High-level memory-safe binding generator for Flutter/Dart Rust

使い方

インストール

dependencies:
  flutter:
    sdk: flutter
  flutter_rust_bridge: ^1.82.6

Rust側の設定

Rust側の設定として、必要な依存関係をCargo.tomlに追加します。

[dependencies]
flutter_rust_bridge = "1.82.6"

FlutterとRustの連携コード生成

flutter_rust_bridgeのコード生成ツールを使用して、FlutterとRustの間でデータをやり取りするためのコードを生成します。以下のコマンドを実行します。

flutter_rust_bridge_codegen --rust-input src/api.rs --dart-output lib/api.dart

ここで、src/api.rsはRust側のエントリーポイントファイル、lib/api.dartは生成されるDartコードの出力先です。

Rustの関数を定義する

RustのコードでFlutterから呼び出す関数を定義します。以下は簡単な例です。

use flutter_rust_bridge::StreamSink;

pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

pub fn get_data(sink: StreamSink<String>) {
    sink.add("Hello from Rust!".to_string());
}

FlutterからRustの関数を呼び出す

Dart側で生成されたコードをインポートし、Rustの関数を呼び出します。

import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
import 'api.dart'; // 自動生成されたファイル

void main() {
  final result = api.add(1, 2);
  print(result); // 3

  final stream = api.getData();
  stream.listen((data) {
    print(data); // "Hello from Rust!"
  });
}

パラメータの詳細

add関数

  • 引数
  • a (int): 足し算する最初の整数
  • b (int): 足し算する二番目の整数
  • 戻り値
  • (int): abの合計

getData関数

  • 引数
  • sink (StreamSink): Rust側から文字列データを受け取るためのシンク
  • 戻り値
  • (Stream): 文字列データのストリーム

Buy me a coffee!

Flutterアプリ開発
シェアする
sogaをフォローする
タイトルとURLをコピーしました