ffigen
Generator for FFI bindings, using LibClang to parse C, Objective-C, and Swift files.
21.0.0
1.1M downloads/mo
#342 most downloaded on pub.dev
dart-lang/native
What this package is like to depend on
Last release 28 days ago
27 Jul 2026
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 93 of 93 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
118 releases · first in 2020
7 releases in the last 12 months
see the full history below
Release timeline
118 releases · Jul 2020 to Jul 2026
2021
2022
2023
2024
2025
2026
Releases
latest 60 of 118-
21.0.027 Jul 2026Release notes
Open source →- Propagate
@Deprecatedannotations from C/ObjC headers into generated Dart bindings. Deprecation messages from__attribute__((deprecated("msg")))andAPI_DEPRECATED("msg", ...)are included in the annotation. - Breaking change: Remove deprecated
useDartHandlefield fromFfiGenerator. - Breaking change: Remove unused
includeSymbolAddressfield fromCategories,Interfaces, andProtocols. - Breaking change: Remove deprecated
wrapperNamefield fromNativeExternalBindings. - Breaking change: Certain synthetic USRs have been modified to ensure they cannot collide with real USRs. It's very unlikely that any user facing USRs are affected.
- Enum struct members now have setters.
- Breaking change: Dart const values will be generated for global variables marked const in C (e.g. static const int) instead of symbol lookups. This supports integers, doubles, and string literals. Including the variable name in the globals -> symbol-address configuration will still generate symbol lookups.
- Fix a bug where block helpers were occasionally given unexpected names. Technically a breaking change because if you were affected by the bug, the block helper's name will change to something more sensible.
- Breaking change: Deleted the config option
Output.sort. Sorting is now always enabled. - Fix(https://github.com/dart-lang/native/issues/2877)
such that ObjCObject
isAnow accepts a nullableObjCObject?and returnsfalsewhen called withnull, aligning its behavior with Dart’sisoperator. - Use
xcrunfor resolving macOS SDK paths, enabling support for non-standard Xcode installations. #3134 - Add allocate constructor for native C structs:
$allocate(Allocator $allocator, {required ...}) - Fix a bug where ObjC
classes with
SWIFT_UNAVAILABLEannotatedinit/newmethods were generating runtime-crashing no-arg constructors. - Fix a bug where methods marked with
__attribute__((unavailable))were incorrectly included in bindings when no platform version info was configured. - Add some more lint ignores to the generated bindings.
- Fix a bug where the config option
Protocols.includeTransitivewas not working correctly. - Add compile time version checks to verify consistency of package:objective_c's versions vs FFIgen's generated code.
- Fix a bug where ObjC bindings may not auto-load their dylib in some cases.
- Fix memory leaks, deadlocks, and crashes that can happen in callbacks, if the target isolate is shut down.
- Bump
package:metadependency to^1.19.0and stop generatingexperimental_member_uselint ignore in generated bindings when@RecordUse()is used. - Support versions 3.x of
package:package_config. - Fix a bug where comments containing carriage return (\r) characters were not properly split, causing comment text to spill out of Dart doc comments.
- Propagate
-
21.0.0-dev.024 Apr 2026 pre-releaseNothing published for this version
-
20.1.125 Nov 2025Release notes
Open source →- Update tests and examples now that package:objective_c is using native assets.
-
20.1.019 Nov 2025Release notes
Open source →- Add
xcodeUri,iosSdkUri, andmacSdkUri, to mirrorxcodePath,iosSdkPath, andmacSdkPath. - Export some missing elements from the config API.
- Provide more convenience utils for building FFIgen configs:
Declarations.excludeAll,Declarations.includeAll,Declarations.includeSet,Declarations.includeAllMembers,Declarations.includeMemberSet,Declarations.useOriginalName,Declarations.renameWithMap,Declarations.useMemberOriginalName, andDeclarations.renameMemberWithMap. - Fix a bug where function pointer param names could collide with keywords.
- Fix a bug where unnamed enum constants were being multiply defined.
- Fix a bug in imported NS_OPTIONS enums.
- Fix a bug in the internal variables generated by function bindings.
- Fix a bug where types imported from package:objective_c could be renamed.
- Add
-
20.0.007 Nov 2025Release notes
Open source →- Breaking change: Completely rewrite the public Dart API for FFIgen.
The new API is focused on a declartive configuration:
FfiGenerate(...)with agenerate()method. The configuration describes everything w.r.t. to the FFIgen input and output. The generate method takes context parameters such as a logger and path to libclang. With this breaking change, also some defaults changed: (1)@Nativebindings are now the default, and (2) struct/unions refered to by pointer will be generated asOpaqueby default. - Breaking change: Rename some ObjC interface built in methods. Rename
isInstancetoisA,castFromtoas, andcastFromPointertofromPointer. - Breaking change: Change ObjC interfaces and protocols to generate as extension types. This gives a small performance boost, and in most cases won't require any code changes.
- Breaking change: Change how ObjC protocols are generated, splitting the
methods related to constructing instances into a separate
Foo$Builderclass. The protocol's instance methods are now directly invokable from the built object. - Breaking change: Minor breaking change in the way that ObjC interface
methods are generated. Interface methods are now generated as extension
methods instead of being part of the class. This shouldn't require any code
changes unless you are using
showorhidewhen importing the interface.- If you are using
show/hideto show or hide a particular interface, egFoo, you'll now also need to show or hideFoo$Methods. - In rare cases the runtime type of the Dart wrapper object around the ObjC
object may change, but the underlying ObjC object will still be the same.
In any case, you should be using
Foo.isInstance(x)instead ofx is Footo check the runtime type of an ObjC object.
- If you are using
- Breaking change: Minor breaking change where ObjC enums declared using
NS_OPTIONSnow default to generating int constants instead of a Dart enum. Users who cared about this distinction were likely already usingenums.as-intfor these enums. This change just provides a better default behavior, so is unlikely to cause any substantive code changes. - Breaking_change: The name collision resolution system has been overhauled to fix various bugs, and make the renaming more consistent. As a result, in some cases different names may be chosen when resolving collisions.
- Breaking_change: Detect the ObjC error raising pattern, where the last
param is
NSError** error, capture any error returned, and throw it as a DartNSErrorException. - Fix for opaque dependencies for struct/union const arrays.
- Make the
Loggerargument ofFfiGenerator.generateoptional. It defaults to a logger printing to stdout and stderr.
- Breaking change: Completely rewrite the public Dart API for FFIgen.
The new API is focused on a declartive configuration:
-
20.0.0-dev.115 Oct 2025 pre-releaseNothing published for this version
-
20.0.0-dev.002 Sep 2025 pre-releaseNothing published for this version
-
19.1.022 Jul 2025Release notes
Open source →- Bump minimum Dart version to 3.8.0.
- Format using
dart formatso that the formatter uses the target package's Dart version and formatting options. - Add
_to the list of Dart keywords, since it has special meaning in newer Dart versions. - Update to the latest lints.
-
19.0.019 May 2025Release notes
Open source →- Use package:objective_c 8.0.0.
- Breaking change: Major change to the way ObjC methods are code-genned.
Methods now use named parameters, making them more readable and closer to how
they're written in ObjC. For example, the
NSDatamethoddataWithBytes:length:used to be generated asdataWithBytes_length_(Pointer<Void> bytes, int length), but is now generated asdataWithBytes(Pointer<Void> bytes, {required int length}). Protocol methods are not affected.- Migration tip: A quick way to find affected methods is to search for
_(.
- Migration tip: A quick way to find affected methods is to search for
- Make it easier for a downstream clone to change behavior of certain utils.
- Fix a bug where types could occasionally show up as a generic ObjCObjectBase, when they were supposed to be codegenned as a more specific interface types.
-
18.1.008 Apr 2025 -
18.0.011 Mar 2025Release notes
Open source →- Use package:objective_c 7.0.0.
- Add variable substitutions that can be used in the
headers.entry-pointsto locate Apple APIs:$XCODE,$IOS_SDK, and$MACOS_SDK. - Add an empty constructor to all ObjC interfaces that have a
newmethod, which just calls that method. - Breaking change: Change the
usrTypeMappingsfield ofConfig's factory constructor from aList<ImportedType>to aMap<String, ImportedType>. - Add a
keepIsolateAliveparameter to the block and protocol constructors that allows a block or protocol to keep its owner isolate alive. - Breaking change:
keepIsolateAlivedefaults to true, so all existing ObjC blocks and protocols now keep their isolates alive by default. - Change how protocols are implemented to fix
a bug, by removing all uses
of
NSProxy. - Breaking change: Change how duplicate identifiers are renamed to match
JNIgen. The main change is that
$is used as a delimiter now, to avoid renamed identifiers from colliding with other identifiers. For example,foois renamed tofoo$1if there's already afooin the namespace. - Fix a bug where blocking blocks could deadlock if invoked from the Flutter UI thread. Note that this relies on changes in Flutter that are currently only available in the main channel. These changes will likely be released in Flutter 3.31.0.
-
17.0.017 Feb 2025Release notes
Open source →- Use package:objective_c 6.0.0
- Support transitive categories of built-in types: https://github.com/dart-lang/native/issues/1820
- Breaking change: Maintain protocol conformance when translating from ObjC
to Dart. For example, ObjC's
id<FooProtocol>is now translated to Dart'sFooProtocol. Generally this shouldn't be a breaking change for code that is using protocols correctly, with a few caveats:- For more advanced use cases that use
ObjCProtocolBuilderdirectly, after callingbuild()you will need to cast the generated object to the target protocol:FooProtocol.castFrom(protocolBuilder.build()). - Due to limitations in the Dart type system, only the first protocol of an
idis used:id<FooProtocol, BarProtocol>becomesFooProtocol. TheFooProtocol.castFrommethod can help work around issues this may cause.
- For more advanced use cases that use
- Fix the handling of global arrays to remove the extra pointer reference.
- Add a
maxfield to theexternal-versionsconfig, and use it to determine which APIs are generated. - Add a runtime OS version check to ObjC APIs, which throws an error if the current OS version is earlier than the version that the API was introduced.
-
16.1.015 Jan 2025Release notes
Open source →- Ensure that required symbols are available to FFI even when the final binary
is linked with
-dead_strip. - Handle dart typedefs in import/export of symbol files.
- Add support for blocking ObjC blocks that can be invoked from any thread.
- Add support for blocking ObjC protocol methods.
- Remove explicit
objc_retaincalls from the generated bindings.
- Ensure that required symbols are available to FFI even when the final binary
is linked with
-
16.0.015 Nov 2024Release notes
Open source →- Ensure all protocols referenced in bindings are available at runtime.
- Use
package:dart_styledirectly to format generated Dart code, rather than subprocessing todart format. - Use package:objective_c 4.0.0
- Fix various small bugs todo with config filters:
- https://github.com/dart-lang/native/issues/1582
- https://github.com/dart-lang/native/issues/1594
- https://github.com/dart-lang/native/issues/1595
- Fix a bug where nullable typealiases were treated as non-null.
- Allow static and instance methods to have the same name: https://github.com/dart-lang/native/issues/1136
- Breaking change: Change the way ObjC categories are generated. Instead of
inserting their methods into the interface, generate Dart extension methods.
For instance methods this makes no difference to user code (as long as the
extension methods are imported correctly). But for static methods it means
MyInterface.staticMethodmust change toMyCategory.staticMethod. Categories are included/excluded by theobjc-categoriesconfig entry. - Add
include-transitive-objc-interfaces,include-transitive-objc-protocols, andinclude-transitive-objc-categoriesconfig flags, which control whether transitively included ObjC interfaces, protocols, and categories are generated. - Breaking change:
include-transitive-objc-interfacesdefaults to false, which changes the default behavior from pulling in all transitive deps, to generating them as stubs.include-transitive-objc-protocolsdefaults to false, andinclude-transitive-objc-categoriesdefaults to true, but these both replicate the existing behavior. - Fix bugs caused by mismatches between ObjC and Dart's inheritance rules.
-
15.0.021 Oct 2024Release notes
Open source →- Bump minimum Dart version to 3.4.
- Dedupe
ObjCBlocktrampolines to reduce generated ObjC code. - Update to latest
package:objective_c. - ObjC objects now include the methods from the protocols they implement. Both required and optional methods are included. Optional methods will throw an exception if the method isn't implemented.
- Breaking change: Only generate ObjC protocol implementation bindings for
protocols that are included by the config filters. This is breaking because
previously super protocols would automatically get implementation bindings,
rather than just being incorporated into the child protocol. If you want those
implementation bindings, you may need to add the super protocol to your
objc-protocolsfilters. - Fix a bug where ObjC listener blocks could be deleted after being invoked by ObjC but before the invocation was received by Dart: https://github.com/dart-lang/native/issues/1571
sort:config option now affects ObjC interface/protocol methods.- Fix a bug where
NSRangewas not being imported from package:objective_c: https://github.com/dart-lang/native/issues/1180 - Breaking change: Return structs from ObjC methods by value instead of taking a struct return pointer.
-
14.0.111 Sep 2024Release notes
Open source →- Fix bug with nullable types in
ObjCBlock's type arguments: https://github.com/dart-lang/native/issues/1537 - Fix a path normalization bug: https://github.com/dart-lang/native/issues/1543
- Fix bug with nullable types in
-
14.0.006 Sep 2024Release notes
Open source →- Create a public facing API for FFIgen that can be invoked as a library:
void generate(Config config). MakeConfigan implementatble interface, rather than needing to be parsed from yaml. - Add a
external-versionsconfig option. Setting the minimum target version will omit APIs from the generated bindings if they were deprecated before this version. - Global variables using ObjC types (interfaces or blocks) will now use the correct Dart wrapper types, instead of the raw C-style pointers.
- Rename
assetIdunder ffi-native toasset-idto follow dash-case. - Breaking change: ObjC blocks are now passed through all ObjC APIs as
ObjCBlock<Ret Function(Args...)>, instead of the codegennedObjCBlock_...wrapper. The wrapper is now a non-constructible set of util methods for constructingObjCBlock. - Breaking change: Generated ObjC code has been migrated to ARC (Automatic
Reference Counting), and must now be compiled with ARC enabled. For example,
if you had a line like
s.requires_arc = []in your podspec, this should either be removed, or you should add the FFIgen generated ObjC code to the list. If you're compiling directly with clang, add the-fobjc-arcflag. - Breaking change: Structs with enum members now generate their members
as Dart enum values as well. For example, with an enum
MyEnumand a struct with a memberMyEnum enumMember, two members are generated:enumMemberAsIntwhich contains the original integer value, andenumMember, which is of typeMyEnum. If you configure the enum to be generated as Dart integers, this new behavior will not apply, and the struct member will be an integer as well. - Breaking change: Enums generated as integers will now generate
sealedclasses as opposed toabstractclasses. - Fix some bugs in the way ObjC method families and ownership annotations were being handled: https://github.com/dart-lang/native/issues/1446
- Apply the existing
member-renameoption to ObjC interface and protocol methods and properties. - Add a
member-filteroption that filters ObjC interface and protocol methods and properties.
- Create a public facing API for FFIgen that can be invoked as a library:
-
13.0.018 Jul 2024Release notes
Open source →- Breaking change: Code-gen the ObjC
idtype toObjCObjectBaserather thanNSObject, since not all ObjC classes inherit fromNSObject. EgNSProxy. - Breaking change: Generate a native trampoline for each listener block, to
fix a ref counting bug: https://github.com/dart-lang/native/issues/835.
- If you have listener blocks affected by this ref count bug, a .m file will be generated containing the trampoline. You must compile this .m file into your package. If you already have a flutter plugin or build.dart, you can simply add this generated file to that build.
- If you don't use listener blocks, you can ignore the .m file.
- You can choose where the generated .m file is placed with the
output.objc-bindingsconfig option.
- Breaking change: Native enums are now generated as real Dart enums, instead
of abstract classes with integer constants. Native enum members with the same
integer values are handled properly on the Dart side, and native functions
that use enums in their signatures now accept the generated enums on the Dart
side, instead of integer values. To opt out of this, use the
enums->as-intoption as specified in the README. - Breaking change: Enum integer types are implementation-defined and not
part of the ABI. Therefore FFIgen does a best-effort approach trying to mimic
the most common compilers for the various OS and architecture combinations.
To silence the warning set config
silence-enum-warningtotrue. - Rename ObjC interface methods that clash with type names. Fixes https://github.com/dart-lang/native/issues/1007.
- Added support for implementing ObjC protocols from Dart. Use the
objc-protocolsconfig option to generate bindings for a protocol. - Fix some bugs where ObjC interface/protocol methods could collide with Dart built-in methods, or with types declared elsewhere in the generated bindings.
- Add
include-unused-typedefsto allow generating typedefs that are not referred to anywhere, the default option isfalse. - Use
package:dart_flutter_team_lints.
- Breaking change: Code-gen the ObjC
-
12.0.009 May 2024Release notes
Open source →- Global variables are now compatible with the
ffi-nativeoption. - Exposing symbol addresses of functions and globals is now compatible with the
ffi-nativeoption. - Add
retainAndReturnPointermethod to ObjC objects and blocks, and addcastFromPointermethod to blocks. - Add
-Wno-nullability-completenessas default compiler option for MacOS. - Breaking change: Use
package:objective_cin ObjC bindings.- ObjC packages will have a flutter dependency (until https://github.com/dart-lang/native/issues/1068 is fixed).
- Core classes such as
NSStringhave been moved intopackage:objective_c. - ObjC class methods don't need the ubiquitous
libargument anymore. In fact, FFIgen won't even generate the native library class (unless it needs to bind top level functions without using@Native). It is still necessary toDynamicLibrary.openthe dylib though, to load the classes and methods. - Adapting to this change:
- Update FFIgen and re-run the code generation. If the generated code no
longer contains the native library class, it means it isn't needed
anymore. So
final lib = FooNativeLib(DynamicLibrary.open('foo.dylib'));must be changed toDynamicLibrary.open('foo.dylib');. - Regardless of whether the native library class still exists, delete the
libparameter from all ObjC object constructors and static method calls and block constructors. - If core ObjC classes such as
NSStringare being used,package:objective_cmust be imported, as they won't be exported by the generated bindings.
- Update FFIgen and re-run the code generation. If the generated code no
longer contains the native library class, it means it isn't needed
anymore. So
- Add --[no-]format option to FFIgen command line, which controls whether the formatting step happens. Defaults to true.
- Delete Dart functions associated with ObjC closure blocks when the block is destroyed. Fixes https://github.com/dart-lang/native/issues/204
- Reduce cursor definition not found logs when
structs/unions->dependency-onlyis set toopaque.
- Global variables are now compatible with the
-
11.0.003 Jan 2024Release notes
Open source →- Any compiler errors/warnings in source header files will now result in
bindings to not be generated by default, since it may result in invalid
bindings if the compiler makes a wrong guess. A flag
--ignore-source-errors(or yaml configignore-source-errors: true) must be passed to change this behaviour. - Breaking change: Stop generating setters for global variables marked
constin C. - Fix objc_msgSend being used on arm64 platforms where it's not available.
- Fix missing comma with
ffi-nativefunctions markedleaf. - Add support for finding libclang in Conda environment.
- Any compiler errors/warnings in source header files will now result in
bindings to not be generated by default, since it may result in invalid
bindings if the compiler makes a wrong guess. A flag
-
10.0.015 Nov 2023Release notes
Open source →- Stable release targeting Dart 3.2 using new
dart:ffifeatures available in Dart 3.2 and later. - Add support for ObjC Blocks that can be invoked from any thread, using NativeCallable.listener.
- Fix invalid exceptional return value ObjCBlocks that return floats.
- Fix return_of_invalid_type analysis error for ObjCBlocks.
- Fix crash in ObjC methods and blocks that return structs by value.
- Fix ObjC methods returning instancetype having the wrong type in sublasses.
- When generating typedefs for
Pointer<NativeFunction<Function>>, also generate a typedef for theFunction. - Use Dart wrapper types in args and returns of ObjCBlocks.
- Use Dart wrapper types in args and returns of static functions.
- Renamed
assettoassetIdforffi-native.
- Stable release targeting Dart 3.2 using new
-
9.0.124 Jul 2023Release notes
Open source →- Fix doc comment missing on struct/union array fields.
- Allow extern inline functions to be generated.
-
9.0.012 Jul 2023 -
8.0.215 May 2023Release notes
Open source →- Fixed invalid code generated due to zero-length arrays in structs/union.
-
8.0.112 May 2023Release notes
Open source →- Fixed invalid code generated due to anonymous structs/unions with unsupported types.
-
8.0.002 May 2023Release notes
Open source →- Stable release for Dart 3.0 with support for class modifers, variadic arguments, and
@Natives.
- Stable release for Dart 3.0 with support for class modifers, variadic arguments, and
-
8.0.0-dev.301 May 2023 pre-releaseRelease notes
Open source →- Added support for variadic functions using config
functions -> variadic-arguments.
- Added support for variadic functions using config
-
8.0.0-dev.201 May 2023 pre-release -
8.0.0-dev.101 May 2023 pre-releaseRelease notes
Open source →- Fix invalid struct/enum member references due to multiple anonymous struct/enum in a declaration.
-
8.0.0-dev.019 Apr 2023 pre-releaseRelease notes
Open source →- Adds
finalclass modifier to generated sub typesStruct,UnionandOpaque. A class modifier is required in Dart 3.0 because the classesdart:ffias markedbase. When migrating a package that uses FFIgen, and exposes the generated code in the public API of the package, to Dart 3.0, that package does not need a major version bump. Sub typingStruct,UnionandOpaquesub types is already disallowed bydart:ffipre 3.0, so adding thefinalkeyword is not a breaking change. - Bumps SDK lowerbound to 3.0.
- Adds
-
7.2.1125 Apr 2023Release notes
Open source →- Fix invalid struct/enum member references due to multiple anonymous struct/enum in a declaration.
-
7.2.1004 Apr 2023 -
7.2.915 Mar 2023 -
7.2.815 Mar 2023Release notes
Open source →- Automatically generate
ignore_for_file: type=lintif not specified in preamble.
- Automatically generate
-
7.2.706 Mar 2023Release notes
Open source →- Fix some macros not being generated in some cases due to relative header paths.
-
7.2.616 Feb 2023Release notes
Open source →- Fix path normalization behaviour for absolute paths and globs starting with
**.
- Fix path normalization behaviour for absolute paths and globs starting with
-
7.2.509 Feb 2023 -
7.2.416 Dec 2022 -
7.2.313 Dec 2022Release notes
Open source →- Change compiler option order so that user options can override built-in options.
-
7.2.223 Nov 2022 -
7.2.118 Nov 2022 -
7.2.024 Oct 2022Release notes
Open source →- Added support for sharing bindings using
symbol-fileconfig. (SeeREADME.mdand examples/shared_bindings).
- Added support for sharing bindings using
-
7.1.012 Oct 2022Release notes
Open source →- Handle declarations with definition accessible from a different entry-point.
-
7.0.007 Oct 2022Release notes
Open source →- Fix typedef include/exclude config.
- Return
ObjCBlockwrapper instead of raw pointer in more cases.
-
6.1.225 Aug 2022 -
6.1.118 Aug 2022Release notes
Open source →- EXPERIMENTAL support for
FfiNative. The API and output might change at any point.
- EXPERIMENTAL support for
-
6.1.018 Aug 2022Release notes
Open source →- Added
exclude-all-by-defaultconfig flag, which changes the default behavior of declaration filters to exclude everything, rather than include everything.
- Added
-
6.0.218 Aug 2022 -
6.0.114 Jun 2022Release notes
Open source →- Replace path separators in
include-directivesbefore matching file names. - Add more ways to find
libclang.
- Replace path separators in
-
6.0.030 May 2022Release notes
Open source →- Removed config
dart-bool. Booleans are now always generated withboolandffi.Boolas it's Dart and C Type respectively.
- Removed config
-
5.0.127 May 2022 -
5.0.013 May 2022Release notes
Open source →- Stable release targeting Dart 2.17, supporting ABI-specific integer types.
- EXPERIMENTAL support for ObjectiveC on MacOS hosts. The API and output might change at any point. Feel free to report bugs if encountered.
-
5.0.0-dev.109 Feb 2022 pre-releaseRelease notes
Open source →- Fixed invalid default dart types being generated for
size_tandwchar_t.
- Fixed invalid default dart types being generated for
-
5.0.0-dev.022 Jan 2022 pre-releaseRelease notes
Open source →- Added support for generating ABI Specific integers.
- Breaking: removed config keys -
size-mapandtypedef-map. - Added config keys -
library-importsandtype-map.
-
4.1.301 Feb 2022 -
4.1.212 Nov 2021 -
4.1.128 Oct 2021Release notes
Open source →- Added fix for errors due to name collision between member name and type name used internally in structs/unions.
-
4.1.004 Oct 2021Release notes
Open source →- Add config key
functions -> leaffor specifyingisLeaf:truefor functions.
- Add config key
-
4.0.008 Sep 2021 -
4.0.0-dev.207 Jun 2021 pre-releaseRelease notes
Open source →- Added config key
functions -> expose-typedefsto expose the typedef to Native and Dart type. - Config key
function->symbol-addressno longer exposes the typedef to Native type. Useexpose-typedefsto get the native type.
- Added config key