s2_sdk_dart

A new Dart FFI package project.

Getting Started

This project is a starting point for a Flutter FFI package, a specialized package that includes native code directly invoked with Dart FFI.

Project structure

This template uses the following structure:

  • src: Contains the native source code, and a CmakeFile.txt file for building that source code into a dynamic library.

  • lib: Contains the Dart code that defines the API of the plugin, and which calls into the native code using dart:ffi.

  • bin: Contains the build.dart that performs the external native builds.

Building and bundling native code

build.dart does the building of native components.

Bundling is done by Flutter based on the output from build.dart.

Binding to native code

To use the native code, bindings in Dart are needed. To avoid writing these by hand, they are generated from the header file (src/s2_sdk_dart.h) by package:ffigen. Regenerate the bindings by running dart run ffigen --config ffigen.yaml.

Invoking native code

Very short-running native functions can be directly invoked from any isolate. For example, see sum in lib/s2_sdk_dart.dart.

Longer-running functions should be invoked on a helper isolate to avoid dropping frames in Flutter applications. For example, see sumAsync in lib/s2_sdk_dart.dart.

Flutter help

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Libraries

s2_sdk_dart