Variables are named containers to store data.

In Dart:

dart
void main() {
  String name = 'Ali';
  int age = 22;
  double score = 95.5;
  bool isStudent = true;

  print(name); // Ali
}

الاتنين صحيح، لكن الأفضل في Dart هو:

dart
print("My name is $name");

لأنه:

والثانية:

dart
print("My name is " + name);

تعمل أيضًا، لكنها أقل استخدامًا.

Common ways:

dart
var city = 'Cairo';      // type inferred
final country = 'Egypt'; // set once
const pi = 3.14;         // compile-time constant

فهمني

  • var = inferred type
  • final = assigned once (runtime)
  • const = compile-time constant

وإزاي مش واضع نوع المتغير قبله؟

ممتاز، خليني أبسطها:

  • var = type inference
    يعني Dart تحدد type من أول قيمة:
dart
var name = 'Ali';   // String
var age = 20;       // int

بعد كده النوع يثبت، يعني ما ينفعش:

dart
var x = 'Ali';
x = 10; // Error
  • final = assigned once (runtime)
    القيمة تتحدد مرة واحدة فقط وقت التشغيل:
dart
final now = DateTime.now(); // runtime value

ينفع بدون كتابة النوع لأن Dart تستنتجه:

dart
final String city = 'Cairo'; // explicit type (optional)
final city = 'Cairo';        // inferred type
  • const = compile-time constant
    لازم القيمة تكون معروفة قبل التشغيل:
dart
const pi = 3.14;
const appName = 'MyApp';

ده غلط لأن مش compile-time:

dart
const time = DateTime.now(); // Error

سؤالك: إزاي بدون type قبله؟
الإجابة: Dart فيها type inference، فالـ compiler يعرف النوع من القيمة الأولى تلقائيًا.
ولو تحب الوضوح أكثر، اكتب النوع صراحة (String, int) وهذا صحيح أيضًا.

بالضبط، دي أهم فايدة variables: تغيّر من مكان واحد بدل ما تعدّل في كل سطر.

بدل:

dart
print('There once was a man named Ahmed');
print('He was 50 years old');
print('He really liked the name Ahmed');
print('But he did not like being 50');

استخدم:

dart
void main() {
  String name = 'Ahmed';
  int age = 50;

  print('There once was a man named $name');
  print('He was $age years old');
  print('He really liked the name $name');
  print('But he did not like being $age');
}

الآن لو غيّرت:

  • name = 'Ali'
  • age = 22

كل الجمل تتحدث تلقائيًا.
هذا يخلي الكود أسرع في التعديل، أقل أخطاء، وأسهل صيانة.

String Functions

Numbers Functions

Data Type

property

Sound Null Safety (Dart)