1245a196ce
We want to migrate the samples to NNBD. In order for the old samples to keep running on the legacy bots, this duplicates all samples, and changes the legacy bots to run the copies. Note this will cause the legacy bots to report that all the samples tests are skipped and that there are now new tests in the samples_2 suite. Existing failures may re-appear. These will be be re-approved or alternatively Skipped. The follow up CL migrates samples/ffi to NNBD. Issue: https://github.com/dart-lang/sdk/issues/43600. TEST=samples TEST=samples_2 Change-Id: Ib40f8fb71f81c091973aa0f860b1a49bac120d6c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/173523 Reviewed-by: Alexander Thomas <athom@google.com>
56 lines
1.6 KiB
Markdown
56 lines
1.6 KiB
Markdown
# Sample code dart:ffi
|
|
|
|
This is an illustrative sample for how to use `dart:ffi`.
|
|
|
|
## Prerequirement
|
|
|
|
For Windows, Linux, and MacOS, you should make sure, sqlite dev lib installed on your system.
|
|
|
|
Windows user can download dll from https://www.sqlite.org/download.html
|
|
|
|
If you do not have any sqlite3.dll or so file, you may found error message:
|
|
|
|
```
|
|
Unhandled exception:
|
|
Invalid argument(s): Failed to load dynamic library (126)
|
|
#0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:13:55)
|
|
#1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12)
|
|
```
|
|
|
|
## Building and Running this Sample
|
|
|
|
Building and running this sample is done through pub.
|
|
Running `pub get` and `pub run example/main` should produce the following output.
|
|
|
|
```sh
|
|
$ pub get
|
|
Resolving dependencies... (6.8s)
|
|
+ analyzer 0.35.4
|
|
...
|
|
+ yaml 2.1.15
|
|
Downloading analyzer 0.35.4...
|
|
Downloading kernel 0.3.14...
|
|
Downloading front_end 0.1.14...
|
|
Changed 47 dependencies!
|
|
Precompiling executables... (18.0s)
|
|
Precompiled test:test.
|
|
|
|
```
|
|
|
|
```
|
|
$ pub run example/main
|
|
1 Chocolade chip cookie Chocolade cookie foo
|
|
2 Ginger cookie null 42
|
|
3 Cinnamon roll null null
|
|
1 Chocolade chip cookie Chocolade cookie foo
|
|
2 Ginger cookie null 42
|
|
expected exception on accessing result data after close: The result has already been closed.
|
|
expected this query to fail: no such column: non_existing_column (Code 1: SQL logic error)
|
|
```
|
|
|
|
## Tutorial
|
|
|
|
A tutorial walking through the code is available in [docs/sqlite-tutorial.md](docs/sqlite-tutorial.md).
|
|
For information on how to use this package within a Flutter app, see [docs/android.md](docs/android.md).
|
|
(Note: iOS is not yet supported).
|