Merhaba. Bu yazımda Flutter ile geliştirdiğimiz uygulamamıza Kotlin&Swift tarafında yazılan kodları çalıştırabilmeyi en temel seviyede inceleyeceğiz.

FLUTTER
Native taraf ile iletişim kurmak için MethodChannel kullanırız. Burada platform adında bir MethodChannel nesnesi oluşturuyoruz ve bu kanal adına ben ‘cagatay.test.native’ adını verdim. Siz dilediğiniz ismi verebilirsiniz ancak benzersiz bir isim olması gerekmektedir.
getNativeText adında bir fonksiyon oluşturuyorum. platform.invokeMethod(‘getTextNative’) MethodChannel üzerinden belirli bir metodun çağrılmasını sağlar. invokeMethod parametresi, çağrılacak olan methodun adını belirtir. Ben getTextNative adında bir method adı belirledim.
Burada önemli olan 2 nokta var.
1) MethodChannel(‘cagatay.test.native‘)
2) invokeMethod(‘getTextNative‘)
Bu iki isimlendirmenin de Swift ve Kotlin tarafında karşılıklarının birebir aynı olması gerekmektedir.
SWIFT
İlk satırda FlutterViewController’dan bir controller oluşturuluyor. Bu controller Flutter uygulamasının view controller’ını temsil eder.
İkinci satırda FlutterMethodChannel adında bir nesne oluşturuluyor ve buradaki name karşılığı Flutter tarafındaki MethodChannel ile aynı olmak zorundadır. Bu platformlar arasında iletişim için kullanılacak olan kanalımızın adını temsil eder. binaryMessenger ise bu kanalın mesajlarını yönlendirecek olan messenger’ı belirtmektedir. Burada controller.binaryMessenger kullanarak FlutterViwController‘ın binaryMessenger‘ı atanmış olur.
Daha sonra setMethodCallHandler çalıştırırız. Bu, MethodChannel üzerinden çağırılan metodları işlemek için bir handler tanımlar.
call.method ==’getTextNative’ olduğu durumda döndürmek istediğimiz değeri belirtiriz. Buradaki isimlendirme de Flutter tarafındaki invokeMethod ile aynı olmak zorundadır.
KOTLIN
‘cagatay.test.native‘ adında bir sabit CHANNEL değişkeni oluşturuyorum. Bu, Flutter tarafındaki MethodChannel ile aynı olmak zorundadır.
configureFlutterEngine fonksiyonu, FlutterEngine yapılandırılması için kullanılır.
4. satırda MethodChannel nesnesi, Flutter ile platform arasındaki iletişimi sağlayan kanalı temsil eder. Mesajları iletmek için flutterEngine.dartExecutor.binaryMessenger ile FlutterEngine’in dartExecutor’ı üzerindeki binaryMessenger kullanılır. Flutter tarafından gönderilen mesajların Kotlin tarafında işlenmesini sağlar.
setMethodCallHandler, MethodChannel üzerinden çağrılan metodları işlemek için bir handler tanımlar.
getTextNative adında bir metod çağrılırsa This is Kotlin code satırını çalıştırır.



Flutter ile Native tarafıyla haberleşmek temelde bu kadar. Native tarafından yapmanız gereken şeyleri yapıp belirlediğiniz kanal aracılığıyla Flutter tarafında kullanabilirsiniz. İyi çalışmalar dilerim.
0 yorum