TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #373 2K
Hola, Amigos! На связи Михаил Чернецов, Flutter dev в Amiga. Сегодня мы поговорим про Dart FFI - инструмент, который позволяет нам встраивать нативный код, написанный на C или C++, в наши приложения, созданные на Dart.

Это позволяет ускорить некоторые сложные вычисления. При этом использование FFI, даже с интерфейсом, получается быстрее, чем вычисление на чистом дарте. Также некоторые библиотеки изначально написаны на C, и переписывание их на Dart будет дополнительной работой, требующей знания как и C, так и Dart.

В самом начале нам нужно получить собранную библиотеку - файл DLL. Для разных операционных систем он будет разным. Для Windows - .dll, для macOS - .dylib, для мобильных ОС - .so. Его можно создать при помощи CMake.

Для использования FFI нам нужно добавить 3 библиотеки - сам dart:ffi, dart:io для работы с платформой и нахождения наших файлов и path для помощи в этом.

Для подключения библиотеки C необходимо объявить сигнатуру функции на языке С:


typedef calculator_func = Int32 Function(Int32 a, Int32 b);


Int32 является нативным типом.

Объявим также тип для функции на языке Dart


typedef Calculator = int Function(int a, int b);


Загрузим библиотеку:


final dylib = ffi.DynamicLibrary.open(...);
final Calculator function = dylib
.lookup<NativeFunction<calculator_func>>(...)
.asFunction();


И теперь мы можем вызвать эту функцию:


print(function(7, 3));


Следует также учитывать, что в FFI нет типа String, и придется использовать Array<UInt32> для трансляции строки в Unicode.

Для веб-приложений существует возможность использовать JS interop, которая позволяет использовать внешние JavaScript библиотеки в веб-приложении. И для этого уже существуют разработанные решения, например, пакет web.

Также существуют Java/Kotlin и Objective C/Swift интеропы, но эти фичи экспериментальны. Еще можно использовать Platform Channel для взаимодействия с нативным кодом.

А вы пробовали работать с Dart FFI на своих проектах? Делитесь в чате.
  • 🔥 10
  • ❤‍🔥 7
  • 🥰 4
  • 👍 2
  • ⚡ 1
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →