معرفی
دارت (Dart) زبان برنامهنویسی متنباز است که گوگل آن را توسعه میدهد. این زبان مهمترین زبان موردنیاز برای ساخت اپلیکیشن با Flutter است. توسعهدهنده رابط کاربری، منطق برنامه، ارتباط با API و تستهای Flutter را عمدتا با دارت مینویسد. مهمترین نکات در مورد دارت به شرح زیر هستند:
زنجیره ابزار و محیط توسعه: دارت فقط یک زبان نیست. Dart SDK ابزار خط فرمان dart، کامپایلر و ابزار مدیریت بسته pub را نیز در بر میگیرد. Flutter هنگام اجرای پروژه و دریافت وابستگیها از این ابزارها بهره میگیرد، اما ساخت خروجی Android و iOS بخشی از زنجیرهای است که Flutter، Gradle و Xcode نیز در آن نقش دارند.
ساختار پروژه و وابستگیها: در یک پروژه Flutter، فایل pubspec.yaml وابستگیها، داراییها و تنظیمات بسته را مشخص میکند. دستورهایی مانند dart pub get یا flutter pub get بستهها را دریافت میکنند. خود Flutter ویجتها و موتور رابط کاربری را فراهم میکند، اما قواعد زبان، مدل نوعدهی ایستا (Static Typing)، برنامهنویسی ناهمگام (Asynchronous Programming)، مدیریت خطا و منطق اجرایی پروژه به دارت تعلق دارند.
در آگهیهای استخدامی ایران، عنوان «توسعهدهنده Flutter» رایج است. کارفرمایان این نقش معمولا انتظار دارند متقاضی بتواند یک نمونهکار Flutter قابل اجرا ارائه کند، API مصرف کند، کد را با Git مدیریت کند و دستکم با نوشتن یا اجرای تست آشنا باشد. یادگیری دارت بدون تمرین Flutter ممکن است مفاهیم زبان را روشن کند، اما برای ورود به نقش توسعهدهنده Flutter باید بتوانید دارت را در ساختار واقعی یک پروژه Flutter به کار ببرید.
ویژگیهای کلیدی
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
نوعدهی ایستا و قابل استنتاج
دارت از نوعدهی ایستا پشتیبانی میکند و در بسیاری از موارد نوع متغیر را استنتاج میکند. این ترکیب، خطاهای رایج را زودتر آشکار میکند و در عین حال کد روزمره را کوتاه نگه میدارد.
-
پشتیبانی از برنامهنویسی ناهمگام
Future، Stream و کلمات async و await برای کارهایی مانند درخواست شبکه، خواندن داده و دریافت رویدادهای پیوسته به کار میروند. این مدل در اپلیکیشنهای Flutter کاربرد روزانه دارد.
-
اجرای سریع در توسعه و کامپایل برای انتشار
دارت در محیط توسعه Flutter معمولاً با کامپایل JIT بازخورد سریع و قابلیتهایی مانند hot reload را فراهم میکند. برای خروجیهای بومی انتشار، کد با AOT کامپایل میشود. خروجی وب مسیر کامپایل جداگانهای دارد و Flutter همراه با ابزارهای پلتفرم مانند Gradle و Xcode فرایند ساخت را تکمیل میکند.
-
مدیریت بسته با pub
ابزار pub وابستگیها را از روی pubspec.yaml دریافت و نسخههای آنها را مدیریت میکند. بستههای عمومی دارت و Flutter معمولاً در مخزن pub.dev منتشر میشوند.
-
پشتیبانی از برنامهنویسی شیگرا
کلاسها، سازندهها، ارثبری، interface، mixin و extension به توسعهدهنده کمک میکنند مدل داده و اجزای برنامه را سازماندهی کند؛ مفاهیمی که در معماری پروژههای Flutter پرکاربردند.
-
قالببندی و تحلیل ایستا
Dart SDK ابزارهایی مانند dart format و dart analyze برای قالببندی و تحلیل ایستا دارد. اجرای تست معمولاً با بستههایی مانند package:test انجام میشود و تستهای ویجت و یکپارچه Flutter از ابزارها و بستههای Flutter استفاده میکنند.
کاربردها
برای آشنایی بهتر با این ابزار، توجه به موارد زیر میتواند مفید باشد.
-
ساخت اپلیکیشن موبایل با Flutter
رابط کاربری، مدیریت وضعیت، مدلهای داده، اعتبارسنجی فرم و اتصال به سرویسهای بکاند در پروژه Flutter با دارت پیادهسازی میشوند.
-
مدیریت وابستگیهای پروژه Flutter
تیم با تعریف بستهها و نسخههای آنها در pubspec.yaml و اجرای ابزار pub، کتابخانههای موردنیاز پروژه را دریافت و بهروزرسانی میکند.
-
نوشتن تست برای منطق برنامه
میتوان منطق مستقل از رابط کاربری، تبدیل دادهها، اعتبارسنجیها و رفتار اجزای Flutter را با ابزارها و بستههای تست بررسی کرد.
-
ساخت ابزار خط فرمان کوچک
دارت برای اسکریپتها یا ابزارهای داخلی تیم، مانند تبدیل فایلهای داده، بررسی تنظیمات یا تولید کدهای تکراری، قابل استفاده است.
-
انتخاب مسیر توسعه موبایل
Dart و Flutter برای ساخت یک کدبیس چندسکویی قابل بررسیاند. اگر محصول به قابلیتهای بومی خاص نیاز دارد، تیم از پیش اکوسیستم Android یا iOS دارد، یا رابط بومی اولویت دارد، Kotlin یا Swift نیز گزینههای مهمی هستند. React Native با JavaScript برای تیمهای وب میتواند انتخاب دیگری باشد.
ابزارهای جایگزین
در کنار دارت، ابزارهای مشابه زیر نیز در دسترس هستند.
پرسشهای رایج درباره دارت
در این بخش، به تعدادی از پرسشهای رایج درباره این ابزار پاسخ داده شده است.
آیا برای یادگیری Flutter باید ابتدا دارت را کامل یاد بگیرم؟
خیر. ابتدا مبانی دارت مانند متغیرها، توابع، کلاسها، null safety، Future و async/await را یاد بگیرید و همزمان در پروژههای کوچک Flutter تمرین کنید. جزئیات پیشرفته زبان را هنگام نیاز پروژه عمیقتر کنید.
تفاوت Dart و Flutter چیست؟
دارت زبان برنامهنویسی و مجموعه ابزارهای آن است. Flutter چارچوبی برای ساخت رابط کاربری و اپلیکیشن چندسکویی است که توسعهدهنده در آن با دارت کد مینویسد.
آیا نصب Flutter برای استفاده از دارت کافی است؟
برای توسعه Flutter معمولاً بله، زیرا Flutter SDK شامل Dart SDK است. اگر فقط میخواهید برنامه خط فرمان یا پروژه مستقل دارت بسازید، میتوانید Dart SDK را جداگانه نصب کنید.
pub چه کاری انجام میدهد؟
pub مدیر بسته دارت است. وابستگیهای تعریفشده در pubspec.yaml را دریافت میکند، نسخههای سازگار را تعیین میکند و اطلاعات نسخههای قفلشده را در pubspec.lock ثبت میکند.
آیا دارت فقط برای اپلیکیشن موبایل کاربرد دارد؟
خیر. دارت برای وب، دسکتاپ، ابزارهای خط فرمان و سرویسهای سمت سرور نیز قابل استفاده است. با این حال، شناختهشدهترین کاربرد آن در بازار توسعه نرمافزار، توسعه با Flutter است.