Dart Library
کتابخانه ها در دارت Dart Library
یک کتابخانه در زبان های برنامه نویسی، شامل مجموعه ای از کلاس ها و توابع میباشد.
زبان دارت نیز دارای مجموعه ای از کتابخانه های بسیار مفید برای ایجاد برنامه ها است.
یک کتابخانه زبان دارت شامل مجموعه ای از کلاس ها، توابع، ثابت ها، typedef ها، property ها و exception ها میباشد.
نحوه import کردن کتابخانه ها در زبان دارت Dart Library
import یا وارد کردن یک کتابخانه، باعث ایجاد دسترسی به کامپوننت ها و اعضای آن کتابخانه در فایلی که آن کتابخانه را وارد کرده است، میشود.
از کلمه کلیدی import برای وارد کردن یک کتابخانه استفاده میکنیم. یک فایل میتواند چندین کتابخانه را import کند.
کتابخانه های خود زبان دارت به صورت dart:library_name وارد میشوند. (URI مسیر کتابخانه است)
1 | import 'URI' |
مثال:
1 2 | import 'dart:io' import 'package:lib1/libfile.dart' |
در جدول زیر تعداد از کتابخانه های داخلی زبان دارت را معرفی کرده ایم:
توضیحات | کتابخانه |
فایل، سوکت، HTTP و سایر ورودی و خروجی های پشتیبانی شده در برنامه های سمت سرور. این کتابخانه به صورت پیشفرض وارد شده و در برنامه های برپایه مرورگر کار نمیکند | dart:io |
این کتابخانه شامل انواع داده های موجود در زبان دارت، کالکشن ها و هر عملکرد اصلی دیگر برای برنامه ها است. این کتابخانه نیز به صورت پیشفرض در تمام برنامه ها وارد میشود | dart:core |
این کتابخانه شامل ثابت ها و توابع ریاضی میباشد | dart:math |
این کتابخانه شامل انکدرها و دیکدرها برای تبدیل داده ها بین فرمت های مختلف مانند JSON و UTF-8 است | dart:convert |
این کتابخانه شامل لیست هایی است که داده های اندازه ثابت را به صورت کارآمد کنترل میکند | dart:typed_data |
در مثال زیر کتابخانه dart:math را در برنامه import کرده و با استفاده از تابع ()sqrt این کتابخانه، جذر عدد ۳۶ را نمایش میدهیم.
1 2 3 4 | import 'dart:math'; void main() { print("Square root of 36 is: ${sqrt(36)}"); } |
خروجی:
1 | Square root of 36 is: 6.0 |
ساخت کتابخانه های سفارشی Dart Library
علاوه بر کتابخانه های خود زبان دارت، میتوانیم کتابخانه های دلخواه خود را ایجاد کنیم.
ساخت یک کتابخانه بسیار ساده است. تنها کافیست تا در ابتدای فایل از دستور library و سپس نام کتابخانه استفاده کنید.
1 2 | library library_name // محتوای کتابخانه |
برای import کردن این نوع کتابخانه ها نیاز به مسیری که کتابخانه در آن قرار گرفته است، داریم.
1 | import 'dir/library_name' |
محدود سازی اعضای کتابخانه
اگر در کتابخانه شما تابع، کلاس، متغیر و … هر چیز دیگری وجود دارد که نمیخواهید توسط برنامه مبدا فراخوانی شود و مورد استفاده قرار گیرد، از پیشوند _ در نام ان ها استفاده کنید.
برای مثال در کتابخانه زیر تابع log نمیتواند توسط هیچ برنامه ای فراخوانی شود.
1 2 3 4 | library loggerlib; void _log(msg) { print("Log method called in loggerlib msg:$msg"); } |
کد زیر را در نظر بگیرید:
1 2 3 4 | import 'test.dart' as web; void main() { web._log("hello from webloggerlib"); } |
اگر برنامه بالا کامپایل شود، خطای زیر را دریافت میکنیم:
1 2 3 4 5 6 7 8 9 | Unhandled exception: No top-level method 'web._log' declared. NoSuchMethodError: method not found: 'web._log' Receiver: top-level Arguments: [...] #0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:184) #1 main (file:///C:/Users/Administrator/WebstormProjects/untitled/Assertion.dart:6:3) #2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) #3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148) |
تعریف یک نام پیشوند برای کتابخانه
فرض کنید دو کتابخانه در برنامه خود وارد کرده اید که این دو کتابخانه یک تابع همنام دارد.
حال کامپایلر از کجا باید بداند که شما تابع کدام کتابخانه را فراخوانی کرده اید؟
استفاده از یک پیشوند (Prefix) این مشکل را حل میکند.
آموزش کامل زبان برنامه نویسی دارت در برنامه اندرویدی ما:
دانلود نرم افزار اندرویدی آموزش زبان برنامه نویسی دارت از کافه بازار