Platform Channel: یہ کیا ہے، اقسام اور موبائل ڈیولپمنٹ میں کام کرنے کا طریقہ

مصنف: IT Sectr اشاعت: 2026-06-03 مطالعے کا وقت: 12 منٹ

Dart کوڈ اور مقامی پلیٹ فارمز کے درمیان تعامل Flutter ایپلیکیشنز تیار کرتے وقت ایک اہم کام ہے جنہیں ڈیوائس کی صلاحیتوں تک رسائی کی ضرورت ہوتی ہے۔ Flutter Team, 2026 کے مطابق، Platform Channel اضافی مقامی لائبریریوں کے بغیر Dart اور Android اور iOS کے مقامی کوڈ کے درمیان پیغام کی منتقلی کو قابل بنا کر اس طرح کے انضمام کے لیے بنیادی طریقہ کار بنا ہوا ہے۔

اہم نکات

  • Platform Channel Dart اور Android و iOS کے مقامی کوڈ کے درمیان دو طرفہ مواصلات کے لیے Flutter میکانزم ہے۔
  • MethodChannel Dart سے مقامی طریقوں کو کال کرنے اور Future کے طور پر نتیجہ حاصل کرنے کی اجازت دیتا ہے۔
  • EventChannel Stream میکانزم کے ذریعے مقامی طرف سے Dart میں واقعات کے سلسلے منتقل کرتا ہے۔
  • BasicMessageChannel صوابدیدی شکل میں لچکدار غیر متزلزل پیغام کے تبادلے فراہم کرتا ہے۔
  • سیریلائزیشن ڈیٹا کی خودکار پیکیجنگ کے لیے StandardMethodCodec اور StandardMessageCodec استعمال کرتا ہے۔

Flutter میں Platform Channel کیا ہے؟

Platform Channel ایک Flutter ٹیکنالوجی ہے جو ایپلیکیشن کے Dart کوڈ اور Android اور iOS آپریٹنگ سسٹمز کے مقامی کوڈ کے درمیان دو طرفہ مواصلات فراہم کرتی ہے۔ Platform Channel کے بغیر، Flutter ایپلیکیشن فریم ورک کی فراہم کردہ صلاحیتوں تک محدود ہے اور کیمرہ API، سینسرز، Bluetooth، فائل سسٹم اور دیگر نچلی سطح کے ڈیوائس افعال تک براہ راست رسائی حاصل نہیں کر سکتی۔

Platform Channel کا فن تعمیر غیر متزلزل پیغام کے تبادلے کے اصول پر بنایا گیا ہے۔ Dart طرف چینل کے ذریعے درخواست بھیجتی ہے، مقامی طرف اسے پروسیس کرتی ہے اور نتیجہ لوٹاتی ہے۔ تمام پیغامات بائنری فارمیٹ میں سیریلائز کیے جاتے ہیں اور Flutter Engine پیغام بفر کے ذریعے منتقل کیے جاتے ہیں، جو عملدرآمد کے ماحول کے درمیان ڈیٹا کی منتقلی میں کم سے کم تاخیر کو یقینی بناتا ہے۔

ہر Platform Channel ایک منفرد منطقی نام سے پہچانا جاتا ہے — ایک سٹرنگ جو پیغام کی روٹنگ کے لیے پتہ کے طور پر کام کرتی ہے۔ Dart طرف اور مقامی طرف کو مواصلات صحیح طریقے سے قائم کرنے کے لیے ایک ہی چینل نام استعمال کرنا چاہیے۔ Flutter ایک ایپلیکیشن میں صوابدیدی تعداد میں چینلز کو سپورٹ کرتا ہے، اور ہر چینل دوسروں سے آزادانہ طور پر کام کرتا ہے۔

آفیشل Flutter دستاویزات کے مطابق، Platform Channel پیغامات کو اسی ترتیب میں پروسیس کرتا ہے جس میں وہ بھیجے گئے تھے، جو پیش قیاسی کال ترتیب کی ضمانت دیتا ہے۔ یہ ان منظرناموں کے لیے اہم ہے جہاں پروسیسنگ کی ترتیب درستگی کو متاثر کرتی ہے، جیسے مقامی ماڈیولز کی ترتیب وار ابتدائیہ یا منحصر آپریشنز کی زنجیر۔

Platform Channel کیسے کام کرتا ہے: پیغام کی منتقلی کا فن تعمیر

Platform Channel کے ذریعے پیغام کی منتقلی کا طریقہ کار تین اہم تہوں پر مشتمل ہے: Dart طرف invokeMethod کے ذریعے Map یا List کے طور پر پیغام بھیجتی ہے، Flutter Engine اسے StandardMethodCodec استعمال کرتے ہوئے سیریلائز کرتا ہے، اور مقامی طرف اپنے ہینڈلر میں کال وصول کرتی ہے۔ نتیجہ اسی راستے پر مخالف سمت میں لوٹایا جاتا ہے۔

سیریلائزیشن کا عمل خود بخود Dart ڈیٹا کی اقسام کو مقامی پلیٹ فارم کے مساوی میں تبدیل کرتا ہے۔ نمبر، سٹرنگز، بولین ویلیوز، فہرستیں اور لغات ڈیولپر کی طرف سے اضافی ترتیب کے بغیر تعاون یافتہ ہیں۔ صوابدیدی ڈیٹا کی اقسام کو چینل کے ذریعے بھیجنے سے پہلے دستی طور پر سیریلائز کیا جانا چاہیے، مثال کے طور پر JSON سٹرنگ میں۔

Flutter Engine کی طرف، پیغام مقامی پلیٹ فارم کی مین تھریڈ قطار میں داخل ہوتا ہے۔ Android میں یہ ایپلیکیشن کا مین تھریڈ ہے، iOS میں یہ مین رن لوپ ہے۔ اس کا مطلب ہے کہ چینل ہینڈلر میں طویل مدتی آپریشنز یوزر انٹرفیس کو بلاک کرتی ہیں اور ہینگ کا سبب بنتی ہیں۔ ڈیولپرز کو مشورہ دیا جاتا ہے کہ وہ بھاری کاموں کو بیک گراؤنڈ تھریڈ میں انجام دیں اور کال بیک کے ذریعے غیر متزلزل طور پر نتائج لوٹائیں۔

Platform Channel کی کارکردگی زیادہ تر استعمال کے معاملات کے لیے کافی ہے: جدید آلات پر ایک پیغام کی منتقلی کا وقت 1 ملی سیکنڈ سے کم ہے۔ تاہم، زیادہ بوجھ والے آپریشنز جیسے ریئل ٹائم ویڈیو سٹریم پروسیسنگ کے لیے، Dart FFI یا ڈیوائس میموری تک براہ راست رسائی والے مقامی پلگ ان کی سفارش کی جاتی ہے۔

فن تعمیر کی ایک اہم حد: Platform Channel فائل ڈسکرپٹرز، میموری پوائنٹرز یا مقامی اشیاء کی منتقلی کی حمایت نہیں کرتا۔ تمام ڈیٹا بائنری فارمیٹ میں سیریلائز ایبل ہونا چاہیے۔ میگا بائٹ رینج میں ڈیٹا کی بڑی مقدار منتقل کرنے کے لیے، چینل کے ذریعے راستہ منتقل کرکے عارضی فائلیں استعمال کریں۔

Flutter ڈیولپمنٹ میں Platform Channel کی تین اقسام

Flutter تین اقسام کے Platform Channel فراہم کرتا ہے، ہر ایک مخصوص تعامل کے منظر نامے کے لیے ڈیزائن کیا گیا ہے۔ صحیح چینل کی قسم کا انتخاب انضمام کے فن تعمیر اور دونوں اطراف — Dart اور مقامی — کوڈ کی دیکھ بھال میں آسانی کا تعین کرتا ہے، اس لیے MethodChannel، EventChannel اور BasicMessageChannel کے درمیان فرق کو سمجھنا ضروری ہے۔

MethodChannel — مقامی طرف طریقوں کو کال کرنا

MethodChannel Platform Channel کی سب سے عام قسم ہے، جو ریموٹ پروسیجر کال پیٹرن کو نافذ کرتی ہے۔ Dart ایک طریقہ کا نام اور دلائل بھیجتا ہے، مقامی طرف آپریشن انجام دیتی ہے اور نتیجہ لوٹاتی ہے۔ ہر کال ایک Future لوٹاتی ہے، جو آسان غیر متزلزل آپریشنز کے لیے Dart کوڈ میں async اور await کی ساخت کے استعمال کی اجازت دیتی ہے۔

چینل کی یہ قسم درخواست جواب آپریشنز کے لیے موزوں ہے: بیٹری کی سطح حاصل کرنا، سینسر ڈیٹا پڑھنا، مقامی طرف حساب لگانا یا سسٹم سروسز سے ڈیٹا کی درخواست کرنا۔ MethodChannel StandardMethodCodec کے ذریعے معیاری ڈیٹا کی اقسام کو سپورٹ کرتا ہے، جس میں جدید Dart میں Null safety سپورٹ کی بدولت null اقدار بھی شامل ہیں۔

حقیقی پروجیکٹس میں، MethodChannel زیادہ تر آفیشل Flutter پلگ ان میں استعمال ہوتا ہے۔ مثال کے طور پر، camera، battery اور path_provider پیکیجز چینل کی اس قسم کے ذریعے کام کرتے ہیں، ہر پلیٹ فارم کے لیے حسب ضرورت انضمام کوڈ لکھے بغیر مقامی API تک رسائی فراہم کرتے ہیں۔

EventChannel — واقعات کے سلسلے کو سبسکرائب کرنا

EventChannel ان منظرناموں کے لیے ڈیزائن کیا گیا ہے جہاں مقامی طرف وقت کے ساتھ واقعات کا مسلسل سلسلہ پیدا کرتی ہے۔ ڈیٹا Stream کے ذریعے Dart میں منتقل کیا جاتا ہے، جو ریئل ٹائم اپ ڈیٹس کو سبسکرائب کرنے کی اجازت دیتا ہے۔ عام استعمال کے معاملات میں ایکسلیرومیٹر ریڈنگز، GPS کوآرڈینیٹس، Bluetooth کی حالت میں تبدیلیاں اور سسٹم سروسز سے اطلاعات شامل ہیں۔

MethodChannel کے برعکس، EventChannel اشاعت سبسکرپشن ماڈل استعمال کرتا ہے۔ مقامی طرف Dart کوڈ سے واضح درخواست کے بغیر، واقعات رونما ہونے پر بھیجتی ہے۔ Dart طرف کے سبسکرائبر کو ہر واقعہ ایک علیحدہ سٹریم عنصر میں ملتا ہے اور انٹرفیس میں استعمال کرنے سے پہلے موصولہ ڈیٹا کو فلٹر یا تبدیل کر سکتا ہے۔

EventChannel استعمال کرتے وقت، سبسکرپشنز اور ان کی منسوخی کا صحیح طریقے سے انتظام کرنا ضروری ہے۔ مقامی طرف میموری لیک سے بچنے کے لیے چینل کے ساتھ کام مکمل ہونے پر ہر StreamSubscription کال کو منسوخ کیا جانا چاہیے۔ Flutter پلیٹ فارم کسی ویجیٹ کے تباہ ہونے پر خود بخود سٹریم کو منسوخ کر دیتا ہے، لیکن واضح سبسکرپشن مینجمنٹ طویل مدتی منظرناموں میں ایپلیکیشن کی وشوسنییتا کو بہتر بناتا ہے۔

BasicMessageChannel — آزاد پیغام کا تبادلہ

BasicMessageChannel Platform Channel کی سب سے لچکدار قسم ہے، جو صوابدیدی غیر متزلزل پیغام کے تبادلے کے لیے ڈیزائن کی گئی ہے۔ MethodChannel کے برعکس، جہاں ہر پیغام میں ایک طریقہ کا نام اور دلائل ہوتے ہیں، BasicMessageChannel بلٹ ان روٹنگ کے بغیر صرف پے لوڈ منتقل کرتا ہے۔ بھیجنے والا پیغام بھیجتا ہے، وصول کرنے والا اسے پروسیس کرتا ہے اور جواب لوٹاتا ہے۔

چینل کی یہ قسم حسب ضرورت تعامل کے پروٹوکولز کے لیے آسان ہے، جہاں پیغام کی ساخت ایپلیکیشن کی حالت کے لحاظ سے متحرک طور پر تبدیل ہو سکتی ہے۔ BasicMessageChannel ڈیفالٹ طور پر StandardMessageCodec استعمال کرتا ہے لیکن غیر معیاری ڈیٹا سیریلائزیشن فارمیٹس کے لیے صوابدیدی MessageCodec پلگ ان کرنے کی حمایت کرتا ہے۔

عملی طور پر، BasicMessageChannel MethodChannel کے مقابلے میں کم استعمال ہوتا ہے کیونکہ اسے بلٹ ان نامکے پیٹرن کے بغیر دستی پیغام روٹنگ ہینڈلنگ کی ضرورت ہوتی ہے۔ تاہم، مقامی لائبریریوں کے ساتھ انضمام کرتے وقت یہ ناگزیر ہے جو MethodChannel میں نافذ معیاری درخواست جواب پیٹرن سے مختلف مخصوص پیغام فارمیٹ کی توقع رکھتی ہیں۔

Platform Channel کا نفاذ: Dart اور مقامی پلیٹ فارمز پر کوڈ کی مثال

آئیے ڈیوائس کی بیٹری کی سطح حاصل کرنے کی مثال کا استعمال کرتے ہوئے ایک عملی Platform Channel کے نفاذ کا جائزہ لیں۔ یہ مثال مکمل ورک فلو کو ظاہر کرتی ہے: Dart طرف MethodChannel کا اعلان کرنا، Android اور iOS پر ہینڈلر کو نافذ کرنا، اور ڈیٹا دستیاب نہ ہونے یا ضروری اجازتیں غائب ہونے پر غلطیوں کو صحیح طریقے سے ہینڈل کرنا۔

Dart طرف MethodChannel

Dart طرف، ایک منفرد سٹرنگ چینل نام کے ساتھ MethodChannel کی ایک مثال بنائی جاتی ہے۔ invokeMethod طریقہ مقامی طرف درخواست بھیجتا ہے اور Future کے طور پر نتیجے کا انتظار کرتا ہے۔ غلطی کا انتظام PlatformException کو پکڑ کر کیا جاتا ہے، جسے مقامی طرف درخواست کی پروسیسنگ کے دوران استثنا ہونے پر لوٹاتی ہے۔

dart
import 'package:flutter/services.dart';

class BatteryPlugin {
  static const _channel = MethodChannel(
    'samples.flutter.dev/battery',
  );

  Future<String> getBatteryLevel() async {
    try {
      final result = await _channel.invokeMethod<int>(
        'getBatteryLevel',
      );
      return 'Battery level: $result%';
    } on PlatformException catch (e) {
      return 'Failed: ${e.message}';
    }
  }
}

Android پر Kotlin میں ہینڈلنگ

Android طرف، ہینڈلر MainActivity میں configureFlutterEngine طریقہ کے ذریعے رجسٹر کیا جاتا ہے۔ setMethodCallHandler کے اندر، آنے والے طریقہ کا نام چیک کیا جاتا ہے، بیٹری کی سطح حاصل کرنے کے لیے BatteryManager کو مقامی کال کی جاتی ہے، اور result آبجیکٹ کے ذریعے نتیجہ لوٹایا جاتا ہے۔ چینل کے ذریعے تعاون یافتہ نہ ہونے والے طریقوں کے لیے result.notImplemented کال کیا جاتا ہے۔

kotlin
import android.os.BatteryManager
import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.MethodChannel

class MainActivity : FlutterActivity() {
  private val CHANNEL = "samples.flutter.dev/battery"

  override fun configureFlutterEngine(
    flutterEngine: FlutterEngine
  ) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(
      flutterEngine.dartExecutor.binaryMessenger,
      CHANNEL
    ).setMethodCallHandler { call, result ->
      if (call.method == "getBatteryLevel") {
        val level = getBatteryLevel()
        if (level != -1) {
          result.success(level)
        } else {
          result.error(
            "UNAVAILABLE",
            "Battery level not available",
            null
          )
        }
      } else {
        result.notImplemented()
      }
    }
  }

  private fun getBatteryLevel(): Int {
    val manager = getSystemService(BATTERY_SERVICE) as BatteryManager
    return manager.getIntProperty(
      BatteryManager.BATTERY_PROPERTY_CAPACITY
    )
  }
}

iOS پر Swift میں ہینڈلنگ

iOS پلیٹ فارم پر، ہینڈلر AppDelegate کلاس میں FlutterMethodChannel کے ذریعے رجسٹر کیا جاتا ہے۔ Swift کوڈ آنے والی کال وصول کرتا ہے، بیٹری کی سطح حاصل کرنے کے لیے UIDevice سسٹم API تک رسائی حاصل کرتا ہے اور نتیجہ Flutter کو لوٹاتا ہے۔ weak self کیپچر کے ساتھ غیر متزلزل ہینڈلنگ میموری میں مضبوط حوالہ جات کے چکر کے خطرے کے بغیر درخواستوں کو انجام دینے کی اجازت دیتی ہے۔

swift
import UIKit
import Flutter

@UIApplicationMain
class AppDelegate: FlutterAppDelegate {
  override func application(
    application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    let controller = window?.rootViewController as! FlutterViewController
    let channel = FlutterMethodChannel(
      name: "samples.flutter.dev/battery",
      binaryMessenger: controller.binaryMessenger
    )
    channel.setMethodCallHandler { [weak self] call, result in
      if call.method == "getBatteryLevel" {
        let level = self?.getBatteryLevel() ?? -1
        if level >= 0 {
          result(level)
        } else {
          result(FlutterError(
            code: "UNAVAILABLE",
            message: "Battery level not available",
            details: nil
          ))
        }
      } else {
        result(FlutterMethodNotImplemented)
      }
    }
    return super.application(
      application: application,
      didFinishLaunchingWithOptions: launchOptions
    )
  }

  private func getBatteryLevel() -> Int {
    let device = UIDevice.current
    device.isBatteryMonitoringEnabled = true
    return Int(device.batteryLevel * 100)
  }
}

Flutter پروجیکٹس میں Platform Channel کب ضروری ہے

Platform Channel اس وقت ضروری ہے جب بھی Flutter ایپلیکیشن کو معیاری پیکیجز میں نافذ نہ ہونے والی ڈیوائس صلاحیتوں تک رسائی کی ضرورت ہو۔ ڈیولپر کو کیمرہ، بائیو میٹرکس، NFC، Bluetooth Low Energy کے لیے مقامی SDK کے ساتھ انضمام کرتے وقت یا ایپلیکیشن سینڈ باکس سے باہر فائل سسٹم کے ساتھ کام کرتے وقت حسب ضرورت چینل بنانا چاہیے۔

پہلا عام منظر نامہ مقامی API کا استعمال ہے جس تک Dart سے براہ راست رسائی نہیں ہے۔ اس میں Android اور iOS سسٹم سروسز، غیر معیاری ڈیٹا ٹرانسفر پروٹوکول والے ہارڈویئر سینسر، حسب ضرورت پروسیسنگ منطق والے پش نوٹیفیکیشنز، اور خفیہ کاری کے آپریشنز شامل ہیں جنہیں محفوظ کلید ذخیرہ کرنے کے لیے ہارڈویئر سیکیورٹی ماڈیول کی ضرورت ہوتی ہے۔

دوسرا منظر نامہ Flutter پروجیکٹ میں موجودہ مقامی کوڈ کا انضمام ہے۔ اگر کمپنی نے پہلے سے Android یا iOS کے لیے مقامی لائبریری تیار کی ہے، تو Platform Channel اسے Dart میں پورٹ کیے بغیر دوبارہ استعمال کرنے کی اجازت دیتا ہے۔ یہ ہائبرڈ ایپلیکیشنز کی Flutter میں منتقلی کو تیز کرتا ہے اور موجودہ مقامی کوڈ اور جمع شدہ کاروباری منطق میں سرمایہ کاری کو محفوظ رکھتا ہے۔

تیسرا منظر نامہ pub.dev پر حسب ضرورت Flutter پلگ ان شائع کرنا ہے۔ تمام مشہور پلگ ان ایک متحد Dart API فراہم کرنے کے لیے Platform Channel استعمال کرتے ہیں جو نیچے ہر پلیٹ فارم کے مقامی کوڈ کو کال کرتا ہے۔ یہ Flutter ٹیم کی طرف سے دونوں موبائل پلیٹ فارمز کی حمایت کے ساتھ دوبارہ استعمال کے قابل پیکیج بنانے کے لیے تجویز کردہ معیاری طریقہ ہے۔

حسب ضرورت Platform Channel بنانے اور pub.dev سے تیار پیکیج استعمال کرنے کے درمیان انتخاب کرتے وقت، پہلے موجودہ حل کی دستیابی چیک کرنے کی سفارش کی جاتی ہے۔ camera، geolocator، shared_preferences اور path_provider پیکیجز زیادہ تر عام ضروریات کو پورا کرتے ہیں۔ حسب ضرورت Platform Channel صرف اس وقت جائز ہے جب کوئی مناسب پیکیج موجود نہ ہو یا جب مقامی رویے کی گہری حسب ضرورت کی ضرورت ہو جو موجودہ حل فراہم نہیں کرتا۔

اکثر پوچھے گئے سوالات

Flutter میں MethodChannel اور EventChannel میں کیا فرق ہے؟

MethodChannel ایک طریقہ کال اور Future کے ذریعے نتیجہ کی واپسی کے ساتھ درخواست جواب پیٹرن کو نافذ کرتا ہے۔ EventChannel سٹریمنگ ماڈل استعمال کرتا ہے: مقامی طرف واقعات رونما ہونے پر بھیجتی ہے اور Dart انہیں Stream کے ذریعے وصول کرتا ہے۔ MethodChannel ان یک وقتی آپریشنز کے لیے موزوں ہے جو نتیجے کا انتظار کرتے ہیں، جبکہ EventChannel مسلسل ریئل ٹائم ڈیٹا سٹریمز کے لیے ہے۔

Platform Channel کے ذریعے کون سی ڈیٹا کی اقسام منتقل کی جا سکتی ہیں؟

Platform Channel بنیادی Dart اقسام کو سپورٹ کرتا ہے: int, double, bool, String, List اور Map۔ یہ اقسام ڈیولپر کی مداخلت کے بغیر StandardMethodCodec اور StandardMessageCodec کے ذریعے خود بخود مقامی مساوی میں سیریلائز ہو جاتی ہیں۔ حسب ضرورت اشیاء منتقل کرنے کے لیے JSON میں دستی سیریلائزیشن یا غیر معیاری فارمیٹس کی حمایت کے ساتھ حسب ضرورت MessageCodec کا استعمال ضروری ہے۔

کیا ایک ایپلیکیشن میں متعدد Platform Channels استعمال کیے جا سکتے ہیں؟

جی ہاں، Flutter ایک ایپلیکیشن میں Platform Channels کی لا محدود تعداد کو سپورٹ کرتا ہے۔ ہر چینل ایک منفرد سٹرنگ نام سے پہچانا جاتا ہے جو Dart طرف اور مقامی پلیٹ فارم دونوں پر مماثل ہونا چاہیے۔ مختلف ماڈیولز کے لیے علیحدہ چینلز بنائے جا سکتے ہیں: ایک کیمرہ کے لیے، دوسرا Bluetooth کے لیے، تیسرا سینسرز کے لیے — یہ سب آزادانہ طور پر کام کرتے ہیں اور ایک دوسرے کی کارکردگی کو متاثر نہیں کرتے۔

Platform Channel کے ذریعے کال کرتے وقت غلطیوں کو کیسے ہینڈل کیا جائے؟

Dart طرف، غلطیوں کو PlatformException کے ذریعے ہینڈل کیا جاتا ہے، جسے مقامی طرف استثنا ہونے پر لوٹاتی ہے۔ try-catch بلاک استثنا کو پکڑتا ہے اور غلطی کے کوڈ، پیغام اور تفصیلات تک رسائی فراہم کرتا ہے۔ مقامی طرف، result.error کال کرنا غلطی کو واپس Dart بھیجتا ہے۔ چینل کے ذریعے تعاون یافتہ نہ ہونے والے طریقوں کے لیے result.notImplemented طریقہ بھی دستیاب ہے۔

کیا Platform Channel ایپلیکیشن کے مین تھریڈ کو بلاک کرتا ہے؟

جی ہاں، Platform Channel ہینڈلر مقامی پلیٹ فارم کے مین تھریڈ پر چلتا ہے۔ اگر ہینڈلر ایک طویل آپریشن (نیٹ ورک کی درخواست، ڈسک پڑھنا یا بھاری حساب) کرتا ہے تو یوزر انٹرفیس ہینگ ہو سکتا ہے۔ مقامی طرف بیک گراؤنڈ تھریڈ میں بھاری کام چلانے اور مکمل ہونے کے بعد ہی result کال کرنے کی سفارش کی جاتی ہے۔ invokeMethod کی غیر متزلزل نوعیت کی وجہ سے Dart طرف بلاک نہیں ہوتی۔

خلاصہ

  • Platform Channel غیر متزلزل پیغام کے تبادلے پر مبنی مقامی Android اور iOS پلیٹ فارمز کے ساتھ Dart کوڈ کے تعامل کے لیے بنیادی Flutter میکانزم ہے۔
  • MethodChannel Future کے ذریعے نتیجہ کی واپسی کے ساتھ یک وقتی مقامی طریقہ کالز کے لیے درخواست جواب پیٹرن کو نافذ کرتا ہے۔
  • EventChannel Stream میکانزم کے ذریعے مقامی طرف سے مسلسل واقعات حاصل کرنے کے لیے سٹریمنگ ماڈل استعمال کرتا ہے۔
  • BasicMessageChannel طریقہ کے ناموں کے لحاظ سے بلٹ ان روٹنگ کے بغیر صوابدیدی پیغامات کا لچکدار غیر متزلزل تبادلہ فراہم کرتا ہے۔
  • سیریلائزیشن (StandardMethodCodec اور StandardMessageCodec کے ذریعے) بنیادی Dart اقسام کو سپورٹ کرتی ہے اور حسب ضرورت اشیاء کے لیے دستی تبدیلی کی ضرورت ہوتی ہے۔
  • کارکردگی زیادہ تر کاموں کے لیے کافی ہے: پیغام کی منتقلی کا وقت 1 ms سے کم، لیکن سٹریمنگ ڈیٹا کے لیے Dart FFI تجویز کیا جاتا ہے۔
  • سفارش: حسب ضرورت چینل بنانے سے پہلے pub.dev پر تیار پیکیج کی دستیابی چیک کریں — زیادہ تر عام مقامی افعال پہلے ہی کمیونٹی کے ذریعے نافذ اور آفیشل پلگ ان کے ذریعے دستیاب ہیں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں