فلاتر

آموزش پیاده سازی Method Channel در فلاتر + فیلم

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که این امکان را برای برنامه نویس ها فراهم میکند تا با استفاده از زبان برنامه نویسی دارت و یکبار کدنویسی از پروژه خود برای سیستم عامل و پلتفرم های مختلف خروجی تهیه کنند.

فلاتر انتخاب بسیار خوبی برای توسعه اپلیکیشن و PWA و همچنین نرم افزارهای دسکتاپ میباشد.

با این حال فلاتر هم مثل هر فریم ورک دیگری دارای مزایا و معایبی میباشد.

یکی از محدودیت های فلاتر ارتباط با سیستم عامل و اجرای برنامه های سطح پایین میباشد.

در اکثر موارد برای رفع این محدودیت نیاز به برنامه نویسی با زبان نیتیو آن سیستم عامل داریم. برای مثال استفاده از زبان کاتلین برای اندروید یا سویفت برای iOS.

کانال‌های متد (Method Channels) در فلاتر یک مکانیزم قدرتمند برای برقراری ارتباط بین کد دارت و کدهای Native پلتفرم‌های اندروید و iOS هستند. این کانال‌ها به شما امکان می‌دهند تا:

  • از کد Dart به کد Native پلتفرم‌ها تابع ارسال کنید.
  • از کد Native پلتفرم‌ها به کد Dart تابع دریافت کنید.
  • داده‌ها را بین کد Dart و کد Native پلتفرم‌ها تبادل کنید.

استفاده از کانال‌های متد مزایای متعددی دارد مثل دسترسی داشتن به APIهای Native پلتفرم‌ها مانند دوربین، GPS، بلوتوث و … که در ادامه به برخی از آنها اشاره می‌کنیم:

1. انعطاف‌پذیری:

کانال‌های متد به شما این امکان را می‌دهند که به طور مستقیم به کدهای Native پلتفرم‌ها از کد Dart دسترسی داشته باشید. این انعطاف‌پذیری به شما امکان می‌دهد تا از کتابخانه‌ها و APIهای Native پلتفرم‌ها در برنامه Flutter خود استفاده کنید.

2. قابلیت استفاده مجدد:

شما می‌توانید کانال‌های متد را برای استفاده در چندین پروژه فلاتر به کار ببرید. این امر باعث صرفه‌جویی در زمان و تلاش شما می‌شود، زیرا نیازی به نوشتن کدهای مشابه برای هر پروژه نیست.

3. سادگی:

استفاده از کانال‌های متد آسان است و نیاز به دانش عمیقی از برنامه‌نویسی Native ندارد.

4. افزایش کارایی:

با استفاده از Method Channel می‌توانید از مزایای کدهای Native پلتفرم‌ها بهره‌مند شوید و کارایی برنامه خود را افزایش دهید.

5. توسعه سریع‌تر:

استفاده از کانال‌های متد به شما کمک می‌کند تا برنامه خود را سریع‌تر توسعه دهید، زیرا نیازی به نوشتن کدهای Native برای هر پلتفرم به صورت جداگانه نیست.

6. پایداری:

Method Channel یک راه ارتباطی پایدار بین کد Dart و کد Native پلتفرم‌ها ارائه می‌دهند.

7. تست‌پذیری:

تست کردن کدهایی که از کانال‌های متد استفاده می‌کنند آسان‌تر است، زیرا می‌توانید کد زبان دارت و کد Native پلتفرم‌ها را به طور جداگانه تست کنید.

در این بخش به شکل عملی میخواهیم از قابلیت Method Channel در برنامه نویسی فلاتر استفاده کنیم.

در این پروژه با صدا زدن یک تابع در زبان کاتلین به کاربر یک پیام به شکل Toast نمایش میدهیم.

یک پروژه فلاتر به شکل ساده ایجاد میکنیم که شامل یک دکمه شناور است. قصد داریم کاربر با کلیک روی این دکمه یک پیام Toast دریافت کند.

  final platform = MethodChannel("com.platform");

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Text("Start"),
        onPressed: () async{

         platform.invokeMethod("toast",{
           "name":"Flutter-learn.ir"
         });
        },
      ),
      appBar: AppBar(),
      body: Container(
        child: Center(
          child: Text("Homepage: "),
        ),
      ),
    );
  }

در کد بالا قبل از متد build ابتدا یک شی از کلاس MethodChannel ایجاد کرده ایم. هنگام ساخت این شی یک رشته هم به عنوان شناسا یا آیدی برای آن قرار میدهیم که یک اسم دلخواه میباشد.

از این اسم در سمت کدهای نیتیو کاتلین نیز استفاده میکنیم.

در بخش build برای رابط کابری از ویجت Scaffold به عنوان لایه اصلی استفاده کردیم که به ویجت دکمه شناور دسترسی داشته باشیم.

در رویداد کلیک این دکمه متد invokeMethod را با استفاده از شی ساخته شده صدا میزنیم.

پارامتر اولی که به عنوان “toast” قرار داده ایم نام تابع میباشد.

در واقع در سمت کاتلین نیز همین نام toast را بررسی میکنیم تا متوجه بشیم که آیا عملیاتی که میخواهیم انجام دهیم مرتبط با این دکمه است یا خیر. در واقع این نام هم همانند یک آیدی میباشد که مشخص میکند قصد انجام چه عملیاتی را داریم.

پارامتر دوم که بصورت Key-Value میباشد پارامترهای ارسالی از سمت فلاتر به بخش کاتلین میباشد.

یک پارامتر با کلید name به کدهای اندروید ارسال میکنیم.

در بخش قبلی کدهای سمت فلاتر را پیاده سازی کردیم, حالا باید در بخش کاتلین بتوانیم ارتباط ایجاد شده را دریافت و پردازش کنیم.

ابتدا روی پوشه android کلیک کنید و گزینه flutter سپس Open Android module in Android Studio را انتخاب کنید تا پوشه اندروید به عنوان پروژه جداگانه باز شود.

وارد فایل MainActivity شوید و کدهای زیر را قرار دهید.

class MainActivity: FlutterActivity() {


    val channel_name = "com.platform"

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
     

        var channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger,channel_name)

        channel.setMethodCallHandler { call, result ->

                if(call.method=="toast"){

                    var arg = call.argument<String>("name")
                    Toast.makeText(this,"Yohouou $arg",Toast.LENGTH_SHORT).show()
                }

        }
    }
}

در این بخش ابتدا نام کانال ارتباطی را در یک متغیر ذخیره میکنیم. سپس متد configureFlutterEngine را بازنویسی میکنیم.

در این متد یک شی مجددا از کلاس MethodChannel ایجاد میکنیم.

بعد از ساخت شی از متد setMethodCallHandler استفاده میکنیم تا دستوراتی که از طیق کانال متد ارسال میشود را دریافت کنیم.

در اینجا میخواهیم فقط به درخواست نمایش Toast جواب دهیم به همین خاطر از یک شرط برای فیلتر کردن متدها استفاده میکنیم.

در صورتی که شرط call.method==”toast” صحیح بود کار نمایش Toast را انجام میدهیم.

برای دریافت اطلاعات ارسال شده از سمت فلاتر نیز از دستور call.argument(“name” استفاده میکنیم.

بدین ترتیب به راحتی با بخش Native ارتباط برقرار کردیم.

برای یادگیری کامل مباحث مربوط به Method Channel میتوانید از دوره آموزشی فلاتر استفاده نمایید.

Hesam

View Comments

Recent Posts

گیتهاب اکشن چیست؟ آموزش استفاده از گیتهاب اکشن در برنامه نویسی فلاتر

گیتهاب اکشن GitHub Actions یکی از ابزارهای گیتهاب است که به شما کمک می‌کنه تا…

6 روز ago

آموزش افزایش سرعت اجرای وب اپلیکیشن های فلاتر

اگر یک برنامه نویس فلاتر هستید و با از نسخه وب اپلیکیشن پروژتون استفاده میکنید…

1 ماه ago

آموزش جامع انتشار اپلیکیشن اندروید و فلاتر در فروشگاه گوگل پلی Google play

به عنوان یک برنامه نویس فلاتر یا اندروید بعد از اتمام پروسه طراحی اپلیکیشن نیاز…

2 ماه ago

دانلود سورس کد رابط کاربری اپلیکیشن فلاتر پروژه پادکست

طراحی رابط کاربری اپلیکیشن پادکست خود را با استفاده از این کیت توسعه UI/UX فلاتر…

2 ماه ago

فایربیس چیست؟ معرفی سرویس ابری Firebase و کاربردهای آن

فایربیس، پلتفرمی قدرتمند از شرکت گوگل برای توسعه و مدیریت برنامه‌های موبایل و وب است.…

3 ماه ago

بهترین منابع برای آموزش رایگان برنامه نویسی فلاتر در سال 2024

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که به وسیله آن میتوانید برای سیستم…

3 ماه ago