مقدمه ای بر پکیج ها در برنامه نویسی فلاتر 

3 سال پیش

مقدمه ای بر پکیج ها در برنامه نویسی فلاتر 

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

دارت برای سازماندهی و به اشتراک گذاری مجموعه ای از قابلیت ها از طریق پکیج است. پکیج دارت به سادگی کتابخانه ها یا ماژول های قابل اشتراک است. به طور کلی، پکیج دارت همان اپلیکیشن دارت است، با این تفاوت که پکیج دارت نقطه ورود برنامه را ندارد.

ساختار کلی پکیج (یک پکیج آزمایشی را در نظر بگیرید ، my_demo_package) به شرح زیر است –

  • lib / src / * – پرونده های کد دارت خصوصی.
  • lib / my_demo_package.dart – پرونده کد اصلی دارت. می تواند به عنوان یک برنامه وارد شود
import 'package:my_demo_package/my_demo_package.dart'

 

  • در صورت لزوم، همانطور که در زیر نشان داده شده است ، ممکن است سایر فایل های کد خصوصی به فایل کد اصلی (my_demo_package.dart) وارد شوند –
export src/my_private_code.dart

 

  • lib / * – هر تعداد فایل کد دارت که در هر ساختار پوشه ای سفارشی مرتب شده اند. به عنوان کد قابل دسترسی است.
import 'package:my_demo_package/custom_folder/custom_file.dart'

 

  • pubspec.yaml – مشخصات پروژه مانند مشخصات برنامه است.

تمام فایل های کد دارت در Package به سادگی کلاس های دارت هستند و برای درج کد آن در پکیج نیازی به کد خاصی ندارند.

 

انواع پکیج ها

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

 

پکیج دارت

کد دارت عمومی، که می تواند در هر دو محیط وب و تلفن همراه استفاده شود. به عنوان مثال ، english_words یکی از این پکیج ها است که حدود ۵۰۰۰ کلمه را شامل می شود و دارای توابع پایه مانند اسم (لیست اسامی در انگلیسی) ، هجاها است (تعداد هجاها را در یک کلمه مشخص کنید).

پکیج ها در برنامه نویسی فلاتر

کد دارت عمومی، که به فریم ورک فلاتر بستگی دارد و فقط در محیط تلفن همراه قابل استفاده است. به عنوان مثال، fluro یک روتر سفارشی برای فلاتر است. بستگی به فریم ورک فلاتر دارد.

پلاگین فلاتر

کد دارت عمومی، که به فریم ورک فلاتر و همچنین کد سیستم عامل زیر بستگی دارد (Android SDK یا iOS SDK). به عنوان مثال، دوربین یک پلاگین برای تعامل با دوربین دستگاه است. دسترسی به دوربین به فریم ورک فلاتر و همچنین فریم ورک کلی بستگی دارد.

استفاده از پکیج دارت

پکیج های دارت میزبانی می شوند و در سرور مستقیم https://pub.dartlang.org منتشر می شوند.  همچنین فلاتر یک ابزار ساده، pub برای مدیریت پکیج های دارت در برنامه را فراهم می کند. مراحل مورد نیاز برای استفاده به عنوان بسته به شرح زیر است –

همانطور که در زیر نشان داده شده است ، نام پکیج و نسخه مورد نیاز را در pubspec.yaml قرار دهید –

dependencies: english_words: ^3.1.5

با بررسی سرور آنلاین، شماره آخرین نسخه را می توان یافت.

با استفاده از دستور زیر پکیج را در برنامه نصب کنید –

flutter packages get

 

هنگام توسعه در استودیو ، Android Studio اندروید هرگونه تغییر در pubspec.yaml را تشخیص می دهد و هشدار پکیج Android studio را به صورت زیر به توسعه دهنده  نشان می دهد

Package Alert

 

پکیج های دارت را می توان با استفاده از گزینه های منو در Android Studio نصب یا به روز کرد.

فایل مورد نیاز را با استفاده از دستورالعمل زیر وارد کنید و شروع به کار کنید –

import 'package:english_words/english_words.dart';

از هر روشی که در پکیج موجود است استفاده کنید ،

nouns.take(50).forEach(print);

در اینجا، ما از تابع اسم برای بدست آوردن و چاپ ۵۰ کلمه برتر استفاده کرده ایم.

 

توسعه پکیج پلاگین در برنامه نویسی  فلاتر 

توسعه پکیج پلاگین فلاتر مانند توسعه برنامه دارت یا Dart Package است. تنها استثنا این است که این افزونه از سیستم (API (Android یا iOS برای دریافت ویژگیهای خاص پلتفرم مورد استفاده استفاده می کند.

همانطور که قبلاً در چگونگی دستیابی به کد پلت فرم در درس های قبلی آموخته ایم ، به ما اجازه دهید یک پلاگین ساده، مرورگر my_brows ایجاد کنیم تا روند توسعه پلاگین را درک کند. عملکرد افزونه my_browser این است که به برنامه اجازه می دهد وب سایت داده شده را در مرورگر مخصوص پلتفرم باز کند.

  • Android Studio را باز کنید.
  • روی File → New Flutter Project کلیک کرده و گزینه Flutter Plugin را انتخاب کنید.
  • همانطور که در اینجا نشان داده شده است می توانید پنجره انتخاب پلاگین Flutter را مشاهده کنید –

Flutter Plugin

 

  • مرورگر my_browser را به عنوان نام پروژه وارد کرده و Next را کلیک کنید.
  • همانطور که در اینجا نشان داده شده است، نام پلاگین و سایر جزئیات را در پنجره وارد کنید –

Configure New Flutter Plugin

 

فایل my_browser.dart را باز کنید و یک متد openBrowser بنویسید تا متد openBrowser خاص پلت فرم را فراخوانی کنید.

Future<void> openBrowser(String urlString) async { 
   try {
      final int result = await _channel.invokeMethod(
         'openBrowser', <String, String>{ 'url': urlString }
      );
   }
   on PlatformException catch (e) { 
      // Unable to open the browser print(e); 
   } 
}

 

فایل MyBrowserPlugin.java را باز کنید و کلاسهای زیر را وارد کنید

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle;

 

  • در اینجا، ما باید کتابخانه مورد نیاز برای باز کردن مرورگر را از اندروید وارد کنیم.
  • متغیر خصوصی جدید mRegistrar از نوع ثبت در کلاس MyBrowserPlugin اضافه کنید.
private final Registrar mRegistrar;

 

  • در اینجا،Registrar برای بدست آوردن اطلاعات زمینه کد استناد استفاده می شود.
  • یک سازنده اضافه کنید تا Registrar را در کلاس MyBrowserPlugin تنظیم کنید.
private MyBrowserPlugin(Registrar registrar) { 
   this.mRegistrar = registrar; 
}

Registrar را تغییر دهید تا سازنده جدید ما در کلاس MyBrowserPlugin قرار گیرد.

public static void registerWith(Registrar registrar) { 
   final MethodChannel channel = new MethodChannel(registrar.messenger(), "my_browser"); 
   MyBrowserPlugin instance = new MyBrowserPlugin(registrar); 
   channel.setMethodCallHandler(instance); 
}

 

onMethodCall را تغییر دهید تا متد openBrowser را در کلاس MyBrowserPlugin قرار دهید.

@Override 
public void onMethodCall(MethodCall call, Result result) { 
   String url = call.argument("url");
   if (call.method.equals("getPlatformVersion")) { 
      result.success("Android " + android.os.Build.VERSION.RELEASE); 
   } 
   else if (call.method.equals("openBrowser")) { 
      openBrowser(call, result, url); 
   } else { 
      result.notImplemented(); 
   } 
}

 

برای دسترسی به مرورگر در کلاس MyBrowserPlugin ، متد openBrowser مخصوص پلتفرم را بنویسید.

private void openBrowser(MethodCall call, Result result, String url) { 
   Activity activity = mRegistrar.activity(); 
   if (activity == null) {
      result.error("ACTIVITY_NOT_AVAILABLE", 
      "Browser cannot be opened without foreground activity", null); 
      return; 
   } 
   Intent intent = new Intent(Intent.ACTION_VIEW); 
   intent.setData(Uri.parse(url)); 
   activity.startActivity(intent); 
   result.success((Object) true); 
}

کد منبع کامل افزونه my_browser به شرح زیر است –

my_browser.dart

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

class MyBrowser {
   static const MethodChannel _channel = const MethodChannel('my_browser'); 
   static Future<String> get platformVersion async { 
      final String version = await _channel.invokeMethod('getPlatformVersion'); return version; 
   } 
   Future<void> openBrowser(String urlString) async { 
      try {
         final int result = await _channel.invokeMethod(
            'openBrowser', <String, String>{'url': urlString}); 
      } 
      on PlatformException catch (e) { 
         // Unable to open the browser print(e); 
      }
   }
}

 

MyBrowserPlugin.java

package com.tutorialspoint.flutterplugins.my_browser; 

import io.flutter.plugin.common.MethodCall; 
import io.flutter.plugin.common.MethodChannel; 
import io.flutter.plugin.common.MethodChannel.MethodCallHandler; 
import io.flutter.plugin.common.MethodChannel.Result; 
import io.flutter.plugin.common.PluginRegistry.Registrar; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 

/** MyBrowserPlugin */ 
public class MyBrowserPlugin implements MethodCallHandler {
   private final Registrar mRegistrar; 
   private MyBrowserPlugin(Registrar registrar) { 
      this.mRegistrar = registrar; 
   } 
   /** Plugin registration. */
   public static void registerWith(Registrar registrar) {
      final MethodChannel channel = new MethodChannel(
         registrar.messenger(), "my_browser"); 
      MyBrowserPlugin instance = new MyBrowserPlugin(registrar); 
      channel.setMethodCallHandler(instance); 
   } 
   @Override 
   public void onMethodCall(MethodCall call, Result result) { 
      String url = call.argument("url"); 
      if (call.method.equals("getPlatformVersion")) { 
         result.success("Android " + android.os.Build.VERSION.RELEASE); 
      } 
      else if (call.method.equals("openBrowser")) { 
         openBrowser(call, result, url); 
      } else { 
         result.notImplemented(); 
      } 
   } 
   private void openBrowser(MethodCall call, Result result, String url) { 
      Activity activity = mRegistrar.activity(); 
      if (activity == null) {
         result.error("ACTIVITY_NOT_AVAILABLE",
            "Browser cannot be opened without foreground activity", null); 
         return; 
      }
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse(url)); 
      activity.startActivity(intent); 
      result.success((Object) true); 
   } 
}
  • برای آزمایش افزونه تازه ایجاد شده ما ، یک پروژه جدید ایجاد کنید، my_browser_plugin_stest.
  • pubspec.yaml را باز کرده و my_browser را به عنوان وابستگی به پلاگین تنظیم کنید.
dependencies: 
   flutter: 
      sdk: flutter 
   my_browser: 
      path: ../my_browser

 

  • Android studio هشدار می دهد pubspec.yaml به روز شده است همانطور که در هشدار پکیج Android studio نشان داده شده در زیر –

Android Studio Package Alert

  • گزینه دریافت وابستگی ها را کلیک کنید. Android studio بسته را از اینترنت دریافت کرده و به درستی برای برنامه پیکربندی می کند.
  • باز کردن main.dart و افزودن پلاگین my_browser به شرح زیر –
import 'package:my_browser/my_browser.dart';

همانطور که در زیر نشان داده شده است، تابعplugin openBrowser را از پلاگین my_browser فراخوانی کنید –

onPressed: () => MyBrowser().openBrowser("https://flutter.dev"),

 

  • کد کامل main.dart به شرح زیر است –
import 'package:flutter/material.dart'; 
import 'package:my_browser/my_browser.dart'; 

void main() => runApp(MyApp()); 

class MyApp extends StatelessWidget { 
   @override 
   Widget build(BuildContext context) {
      return MaterialApp( 
         title: 'Flutter Demo', 
         theme: ThemeData( 
            primarySwatch: Colors.blue, 
         ), 
         home: MyHomePage(
            title: 'Flutter Demo Home Page'
         ), 
      );,
   }
} 
class MyHomePage extends StatelessWidget { 
   MyHomePage({Key key, this.title}) : super(key: key); 
   final String title; 
   @override 
   Widget build(BuildContext context) {
      return Scaffold(
         appBar: AppBar( 
            title: Text(this.title), 
         ), 
         body: Center(
            child: RaisedButton(
               child: Text('Open Browser'), 
               onPressed: () => MyBrowser().openBrowser("https://flutter.dev"), 
            ),
         ), 
      ); 
   }
}

 

برنامه را اجرا کنید و روی دکمه Open Browser کلیک کنید و ببینید که مرورگر راه اندازی شده است. همانطور که در تصویر زیر نشان داده شده است،

 

Open Browser

 

شما می توانید برنامه مرورگر را مشاهده کنید – صفحه مرورگر همانطور که در تصویر زیر نشان داده شده است –

 

Flutter Infrastructure

 

منبع.

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

  1. معرفی برنامه نویسی فلاتر
  2. آموزش نصب فلاتر
  3. اصول ایجاد یک برنامه فلاتر در Android Studio
  4. معماری فریم ورک برنامه نویسی فلاتر
  5. مقدمه ای بر برنامه نویسی دارت
  6. مقدمه ای بر ویجت ها در برنامه نویسی فلاتر
  7. آموزش طرح بندی در برنامه نویسی فلاتر 
  8. ژست های حرکتی در برنامه نویسی فلاتر 
  9. مدیریت State در برنامه نویسی فلاتر
  10. آموزش انیمیشن در برنامه نویسی فلاتر
  11. آموزش نوشتن کد خاص اندروید در برنامه نویسی فلاتر
  12. آموزش نوشتن کد مخصوص IOS در برنامه نویسی فلاتر
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه