dart:ffi
- Dart kursu
- Uzman
- Ders 13/47
- 5 dk
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
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
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
import '____';
void main() {
print('ffi loaded');
}
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 |