Dart چیست؟ آموزش کامل و جامع Dart

Dart چیست؟

Dart یک زبان برنامه‌نویسی چندمنظوره، شی‌گرا و منبع‌باز است که توسط Google توسعه داده شده است. این زبان به‌ویژه برای ساخت اپلیکیشن‌های موبایل، وب و دسکتاپ با استفاده از فریم‌ورک Flutter طراحی شده است.

Dart با ترکیب ویژگی‌های بهترین زبان‌های برنامه‌نویسی مدرن، یک تجربه توسعه قدرتمند و انعطاف‌پذیر را ارائه می‌دهد.
مثال ساده Dart
void main() {
  String name = 'دارت';
  print('سلام $name!');
  
  // تعریف یک کلاس ساده
  class Person {
    String name;
    int age;
    
    Person(this.name, this.age);
    
    void introduce() {
      print('من $name هستم و $age سال دارم.');
    }
  }
}

تاریخچه Dart

Dart در سال 2011 توسط Google معرفی شد. هدف اصلی از توسعه این زبان، ارائه جایگزینی مدرن برای JavaScript بود. اما با گذر زمان، Dart به یک زبان همه‌کاره تبدیل شد که بیشترین کاربرد آن در توسعه اپلیکیشن‌های موبایل با Flutter است.

نسخه 3.0 Dart در سال 2023 منتشر شد که قابلیت‌های جدیدی مانند Records، Patterns و ویژگی‌های جدید زبان را معرفی کرد.

ساختار پایه Dart

هر برنامه Dart از یک یا چند فایل با پسوند .dart تشکیل شده است. هر فایل Dart شامل تعاریف کلاس‌ها، توابع، متغیرها و یک تابع main() است که نقطه شروع برنامه می‌باشد.

ساختار پایه یک برنامه Dart
// تعریف متغیرهای سراسری
const String appName = 'My Dart App';

// تعریف یک کلاس
class User {
  final String name;
  final int age;
  
  User(this.name, this.age);
}

// تابع اصلی برنامه
void main() {
  var user = User('علی', 25);
  print('برنامه $appName');
  print('کاربر: ${user.name}');
}
در Dart، همه چیز یک شیء است و هر شیء نمونه‌ای از یک کلاس است. حتی اعداد، توابع و null همگی شیء هستند.

ویژگی‌های اصلی Dart

سیستم تایپ قوی

Dart دارای سیستم تایپ قوی است که هم از type inference و هم از type annotation پشتیبانی می‌کند.

مثال سیستم تایپ
// Type inference
var name = 'علی';  // String
var age = 25;      // int

// Type annotation
String title = 'مهندس';
int score = 100;

// Generic types
List names = ['علی', 'مریم', 'رضا'];
Map scores = {'علی': 95, 'مریم': 98};

Null Safety

از نسخه 2.12، Dart از sound null safety پشتیبانی می‌کند که به جلوگیری از خطاهای null reference کمک می‌کند.

مثال Null Safety
// متغیر non-nullable
String name = 'علی';
// name = null; // خطا

// متغیر nullable
String? nullableName;
nullableName = null; // مجاز

// استفاده از عملگر ?
print(nullableName?.length); // null اگر nullableName برابر با null باشد

نحو و دستورات پایه Dart

متغیرها و انواع داده

انواع داده در Dart
// انواع اصلی داده
int age = 25;
double height = 1.75;
String name = 'علی';
bool isStudent = true;

// لیست‌ها
List numbers = [1, 2, 3, 4, 5];

// مپ‌ها
Map info = {
  'name': 'علی',
  'city': 'تهران'
};

کنترل جریان برنامه

ساختارهای کنترلی
// if else
if (age >= 18) {
  print('بزرگسال');
} else {
  print('کودک');
}

// for loop
for (var i = 0; i < 5; i++) {
  print(i);
}

// while loop
while (condition) {
  // کد
}

// switch case
switch (grade) {
  case 'A':
    print('عالی');
    break;
  case 'B':
    print('خوب');
    break;
  default:
    print('نامشخص');
}

شی‌گرایی در Dart

Dart یک زبان شی‌گرا است که از تمام ویژگی‌های اصلی برنامه‌نویسی شی‌گرا پشتیبانی می‌کند.

مثال برنامه‌نویسی شی‌گرا
// تعریف یک کلاس پایه
abstract class Animal {
  String name;
  Animal(this.name);
  
  void makeSound();
}

// کلاس مشتق شده
class Cat extends Animal {
  Cat(String name) : super(name);
  
  @override
  void makeSound() {
    print('میو میو');
  }
}

// استفاده از interface
class Flyable {
  void fly() {
    print('در حال پرواز');
  }
}

// میکسین
mixin Swimming {
  void swim() {
    print('در حال شنا');
  }
}

برنامه‌نویسی ناهمگام در Dart

Dart از برنامه‌نویسی ناهمگام با استفاده از Future و async/await پشتیبانی می‌کند.

مثال برنامه‌نویسی ناهمگام
// تعریف یک تابع ناهمگام
Future fetchUserData() async {
  // شبیه‌سازی درخواست شبکه
  await Future.delayed(Duration(seconds: 2));
  return 'داده‌های کاربر';
}

// استفاده از تابع ناهمگام
void main() async {
  print('در حال دریافت داده...');
  String data = await fetchUserData();
  print('داده دریافت شد: $data');
}

// کار با Stream
Stream countStream() async* {
  for (int i = 1; i <= 5; i++) {
    await Future.delayed(Duration(seconds: 1));
    yield i;
  }
}

Dart و Flutter

Flutter فریم‌ورک اصلی برای توسعه اپلیکیشن با Dart است که امکان ساخت اپلیکیشن‌های موبایل، وب و دسکتاپ را فراهم می‌کند.

مثال ساده Flutter
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('برنامه من'),
        ),
        body: Center(
          child: Text('سلام دنیا!'),
        ),
      ),
    );
  }
}

مدیریت پکیج‌ها در Dart

Dart از سیستم مدیریت پکیج قدرتمندی به نام pub استفاده می‌کند. pub.dev مخزن رسمی پکیج‌های Dart و Flutter است.

مثال فایل pubspec.yaml
name: my_app
description: A new Flutter project
version: 1.0.0

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.0
  shared_preferences: ^2.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0
برای نصب پکیج‌ها از دستور pub get یا flutter pub get استفاده می‌شود. برای به‌روزرسانی پکیج‌ها نیز می‌توانید از pub upgrade استفاده کنید.

دستورات مهم pub

- pub get: نصب همه وابستگی‌ها
- pub upgrade: به‌روزرسانی پکیج‌ها
- pub outdated: نمایش پکیج‌های قدیمی
- pub publish: انتشار پکیج در pub.dev

بهترین شیوه‌های کدنویسی Dart

قواعد نام‌گذاری

مثال‌های نام‌گذاری
// نام کلاس‌ها: PascalCase
class UserAccount { }

// نام متغیرها و توابع: camelCase
String userName = 'علی';
void calculateTotal() { }

// نام ثابت‌ها: SCREAMING_SNAKE_CASE
const int MAX_LOGIN_ATTEMPTS = 3;

// نام فایل‌ها: snake_case
// user_account.dart

ساختار کد

- استفاده از effective_dart برای پیروی از قواعد استاندارد
- جداسازی منطق کسب‌وکار از رابط کاربری
- استفاده از کامنت‌های مناسب برای مستندسازی کد
- رعایت اصل SOLID در برنامه‌نویسی شی‌گرا

عدم رعایت این اصول می‌تواند باعث کاهش خوانایی و نگهداری‌پذیری کد شود.

ابزارهای مفید برای کار با Dart

محیط‌های توسعه (IDE)

- Android Studio با پلاگین Dart و Flutter
- VS Code با افزونه‌های Dart و Flutter
- IntelliJ IDEA با پلاگین Dart

ابزارهای تحلیل کد

- dart analyze: تحلیل استاتیک کد
- dart fix: اصلاح خودکار مشکلات کد
- dart format: فرمت‌دهی خودکار کد
- dartdoc: تولید مستندات API

استفاده از DevTools برای دیباگ کردن و بررسی عملکرد برنامه بسیار مفید است.

منابع یادگیری Dart

منابع رسمی

- مستندات رسمی Dart
- کدلب‌های رسمی Dart
- مخزن پکیج‌های Dart

دوره‌های آنلاین

- دوره‌های Dart در Udemy
- دوره‌های Dart در Coursera
- دوره‌های Dart در Pluralsight

کتاب‌های مفید

- Dart Apprentice
- Programming in Dart
- Dart in Action

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

کلمات کلیدی:

Dart Flutter برنامه‌نویسی موبایل Google توسعه اپلیکیشن زبان برنامه‌نویسی دارت فلاتر آموزش دارت برنامه‌نویسی دارت

جمع‌بندی:

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

Leave a Reply

Your email address will not be published. Required fields are marked *