An example for package:code_assets demonstrating how to bundle a pre-built sqlite3 dynamic library from the host system. (See ../sqlite for an example that builds the dynamic library from source.)
This project is a minimal, cross-platform demonstration of how to use Dart's build hooks, with code assets and dart:ffi to call a simple function from a popular C library. This project uses sqlite3_libversion from the sqlite3 library.
The SQLite source (amalgamation) and prebuilt binaries for Windows can be found on https://www.sqlite.org/download.html.
The native code is downloaded or located on the host machine by the hook/build.dart, which is run by the Dart SDK CLI tools. This build hook downloads a pre-built sqlite3 dynamic library for Windows, it expects sqlite to be installed via HomeBrew on MacOS, and looks for the default system location on Linux.
The Dart FFI bindings to the C code are generated by tool/ffigen.dart. FFIgen generates Dart FFI bindings from third_party/sqlite/sqlite3.h into lib/src/third_party/sqlite3.g.dart.
The Dart code in lib/src/sqlite_prebuilt.dart uses the generated FFI bindings to provide a Dart API (not exposing any C types) for the users of this package.