import في Dart

🔹 import في Dart 🚀

في Dart، يتم استخدام الكلمة المفتاحية import لاستيراد المكتبات (Libraries) والملفات الخارجية في البرنامج.
يساعد import في إعادة استخدام الكود وتنظيمه عن طريق استيراد الوظائف (Functions)، الكلاسات (Classes)، والمتغيرات (Variables) من ملفات أو حزم أخرى.


🔹 أنواع import في Dart

✅ 1. استيراد مكتبات Dart الأساسية

يمكنك استيراد المكتبات المدمجة في Dart مثل:

  • dart:core (مضمن تلقائيًا) 🟢
  • dart:math (للعمليات الرياضية) ➕
  • dart:io (للتعامل مع الملفات و I/O) 📂
  • dart:convert (لتحويل البيانات) 🔄

📌 مثال: استيراد مكتبة dart:math

dartنسختحرير<code>import 'dart:math';

void main() {
  print(sqrt(25)); // ✅ Output: 5.0
}
</code>
Dart

🔹 التفسير: dart:math تحتوي على دوال رياضية مثل sqrt() لحساب الجذر التربيعي.


✅ 2. استيراد ملفات محلية (import 'file.dart')

يمكنك استيراد ملفات Dart أخرى داخل نفس المشروع.

📌 مثال: استيراد ملف محلي (utils.dart)

📂 ملف utils.dart

dartنسختحرير<code>String greet(String name) {
  return "مرحبًا $name!";
}
</code>
Dart

📂 ملف main.dart

dartنسختحرير<code>import 'utils.dart';

void main() {
  print(greet("Ali")); // ✅ Output: مرحبًا Ali!
}
</code>
Dart

🔹 التفسير:

  • استوردنا utils.dart واستخدمنا الدالة greet() من الملف الآخر.

✅ 3. استيراد الحزم (import 'package:...')

🔹 يستخدم لاستيراد المكتبات الخارجية من pub.dev أو مكتبات المشروع.

📌 مثال: استيراد http لإجراء طلبات HTTP 1️⃣ أضف المكتبة إلى pubspec.yaml:

yamlنسختحريرdependencies:
  http: ^0.13.0

2️⃣ استخدمها في main.dart:

dartنسختحرير<code>import 'package:http/http.dart' as http;

void main() async {
  var response = await http.get(Uri.parse("https://jsonplaceholder.typicode.com/posts/1"));
  print(response.body);
}
</code>
Dart

🔹 التفسير:

  • import 'package:http/http.dart' as http; يستورد مكتبة http لإجراء طلبات الشبكة.
  • استخدمنا http.get() لجلب بيانات من API.

✅ 4. استيراد جزئي (show و hide)

show: لاستيراد عناصر محددة فقط من المكتبة.
hide: لاستبعاد عناصر معينة من المكتبة.

📌 مثال: show لاستيراد دالة معينة

dartنسختحرير<code>import 'dart:math' show pi, sqrt;

void main() {
  print(pi);    // ✅ يعمل
  print(sqrt(16)); // ✅ يعمل
  // print(Random()); // ❌ خطأ لأننا لم نستورد `Random`
}
</code>
Dart

📌 مثال: hide لاستبعاد عنصر معين

dartنسختحرير<code>import 'dart:math' hide pi;

void main() {
  print(Random().nextInt(100)); // ✅ يعمل
  // print(pi); // ❌ خطأ لأن `pi` مستبعدة
}
</code>
Dart

✅ 5. استيراد باستخدام deferred (تحميل Lazy)

🔹 يسمح بتحميل المكتبة فقط عند الحاجة لتحسين أداء التطبيق.

📌 مثال: deferred as لتحميل مكتبة عند الحاجة

dartنسختحرير<code>import 'utils.dart' deferred as utils;

void main() async {
  await utils.loadLibrary(); // 🔄 تحميل المكتبة
  print(utils.greet("Dart")); // ✅ Output: مرحبًا Dart!
}
</code>
Dart

🔹 التفسير:

  • deferred as utils; يعني أن utils.dart لن يتم تحميله إلا عند استدعاء loadLibrary().

🎯 خلاصة import في Dart

import 'dart:math'; → استيراد مكتبات Dart.
import 'utils.dart'; → استيراد ملف محلي.
import 'package:http/http.dart' as http; → استيراد مكتبة خارجية.
import 'dart:math' show pi; → استيراد عناصر محددة.
import 'dart:math' hide pi; → استبعاد عناصر معينة.
import 'utils.dart' deferred as utils; → تحميل Lazy عند الحاجة.