CodeBlanks Logo Icon CodeBlanks

dart:ffi

dart:ffi ile C interop öğrenirsin.

dart:ffi

dart:ffi, Dart'ın C kütüphaneleriyle iletişim kurmak için kullanılan kütüphanesidir. FFI (Foreign Function Interface), Dart kodundan C fonksiyonlarını çağırmayı sağlar. import 'dart:ffi'; ile içe aktarılır.

FFI, performans kritik işlemlerde veya mevcut C kütüphanelerini yeniden kullanmada kullanışlıdır. Dart, native platformlarda (Flutter native, CLI) FFI'yi destekler; web'de desteklenmez. dart:ffi ile DynamicLibrary yüklenir, fonksiyonlar lookupFunction ile bağlanır.

FFI sınırları

dart:ffi yalnızca native platformlarda çalışır; web'de desteklenmez. Bir C kütüphanesi yüklemek için DynamicLibrary.open('libmylib.so') (Linux), .dylib (macOS) veya .dll (Windows) kullanılır.

FFI, Dart ve C arasında veri paylaşmak için Pointer, Struct ve Union türlerini sunar. Bu türler bellek doğrudan erişim sağlar; bu nedenle dikkatli kullanılmalıdır. Yanlış kullanım bellek bozulmasına yol açar.

Uygulama FfiBinding sınıfı

import 'dart:ffi'; ile FFI kütüphanesini içe aktar. Bir FfiBinding sınıfı tanımla: final String name; final String dartType; FfiBinding(this.name, this.dartType); alan ve kurucu. String describe() => '$name: $dartType'; metodu. main içinde final b = FfiBinding('add', 'int Function(int, int)'); yarat; print(b.describe()); ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // dart:ffi'yi içe aktar
  // FfiBinding sınıfını tanımla (name, dartType; describe metodu)
  // bir FfiBinding yarat; describe() yazdır
}

Örnek çözüm

main.dart
import 'dart:ffi';

class FfiBinding {
  final String name;
  final String dartType;
  FfiBinding(this.name, this.dartType);
  String describe() => '$name: $dartType';
}

void main() {
  final b = FfiBinding('add', 'int Function(int, int)');
  print(b.describe());
}

Beklenen çıktı

add: int Function(int, int)

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 dart:ffi ne sağlar?

  • Web render
  • C kütüphaneleriyle iletişim Doğru cevap
  • Çöp toplama
  • UI widget'ları

Açıklama: dart:ffi Dart'ın C interop kütüphanesidir.

2 dart:ffi import

Soru
import '____';

void main() {
  print('ffi loaded');
}
Cevap
import 'dart:ffi';

void main() {
  print('ffi loaded');
}

Açıklama: dart:ffi FFI kütüphanesidir.

3 FFI parçalarını eşleştir

Kavram Anlamı
dart:ffi C interop kütüphanesi
DynamicLibrary C kütüphanesi yükleyici
lookupFunction Fonksiyon bağlayıcı
Pointer Bellek adresi

Uzman bölümündeki tüm dersler