- Dart কী?
- Dart এর ইতিহাস
- Dart কেন তৈরি হয়েছিল?
- Dart এর বৈশিষ্ট্য
- Dart কিভাবে কাজ করে?
- Dart এর ব্যবহার
- Dart vs Other Languages
- Dart এর Data Types
- Dart এর Variable
- Dart এর Operators
- Dart এ Control Flow
- Dart এ Function
- Dart এ OOP
- Dart এ Null Safety
- Dart এ Async Programming
- Dart Installation
- Dart শেখার সুবিধা
- Dart এর অসুবিধা
- Dart এর ভবিষ্যৎ
- FAQ — সচরাচর জিজ্ঞাসিত প্রশ্ন
🎯 Dart কী? (What is Dart?)
Dart হলো Google কর্তৃক তৈরি একটি open-source, general-purpose, object-oriented programming language যা মূলত mobile, web, server এবং desktop application তৈরি করতে ব্যবহৃত হয়।
সহজ ভাষায় বললে:
textDart = Google এর তৈরি + Modern Programming Language + Flutter এর ভিত্তি
Dart কে বিশেষভাবে Flutter framework এর প্রাণ বলা হয়। Flutter দিয়ে যত অ্যাপ তৈরি হয়, তার সবকিছুই Dart ভাষায় লেখা হয়।
একনজরে Dart:
| বিষয় | তথ্য |
|---|---|
| নাম | Dart (ডার্ট) |
| ধরন | Object-Oriented Programming Language |
| তৈরি করেছে | |
| প্রথম প্রকাশ | ২০১১ সাল |
| বর্তমান স্থিতিশীল সংস্করণ | Dart 3.x (2025) |
| ডিজাইনার | Lars Bak এবং Kasper Lund |
| টাইপ সিস্টেম | Static + Strong Typing |
| লাইসেন্স | BSD License (Open Source) |
| অফিসিয়াল ওয়েবসাইট | dart.dev |
| ফাইল এক্সটেনশন | .dart |
📜 Dart এর ইতিহাস (History of Dart)
টাইমলাইন:
text📅 ২০১১ (অক্টোবর) → Dart প্রথম ঘোষণা করা হয় (GOTO Conference, Denmark) 📅 ২০১৩ → Dart 1.0 (প্রথম স্থিতিশীল সংস্করণ) প্রকাশ 📅 ২০১৫ → Dart Developer Summit অনুষ্ঠিত 📅 ২০১৭ → Flutter এর সাথে Dart এর জনপ্রিয়তা বাড়তে শুরু 📅 ২০১৮ → Dart 2.0 প্রকাশ (Strong Type System) 📅 ২০২০ → Dart 2.12 (Null Safety চালু) 📅 ২০২৩ → Dart 3.0 (Records, Patterns, Class Modifiers) 📅 ২০২৪-২৫ → Dart 3.x (আরও উন্নত ফিচার)
বিস্তারিত ইতিহাস:
Lars Bak এবং Kasper Lund — এই দুজন ড্যানিশ সফটওয়্যার ইঞ্জিনিয়ার Google-এ কাজ করার সময় Dart তৈরি করেন। তাঁরা আগে V8 JavaScript Engine এ কাজ করেছিলেন।
Google মূলত JavaScript এর সীমাবদ্ধতা দূর করতে Dart তৈরি করেছিল। প্রাথমিকভাবে পরিকল্পনা ছিল Dart কে Chrome ব্রাউজারে নেটিভ ভাবে চালানো হবে, কিন্তু পরবর্তীতে সেই পরিকল্পনা বাতিল করে Dart-to-JavaScript compiler তৈরি করা হয়।
🤔 Dart কেন তৈরি হয়েছিল?
Google Dart তৈরি করার পেছনে কিছু গুরুত্বপূর্ণ কারণ ছিল:
১. JavaScript এর সীমাবদ্ধতা দূর করা
textJavaScript এর সমস্যা: ❌ Loosely typed language ❌ Large-scale app এ maintain করা কঠিন ❌ Performance issues ❌ Inconsistent behavior Dart এর সমাধান: ✅ Strongly typed language ✅ Better tooling ও structure ✅ Optimized performance ✅ Consistent behavior
২. Cross-Platform Development
- একটি কোডবেস থেকে Android, iOS, Web, Desktop সব প্ল্যাটফর্মে অ্যাপ তৈরি।
৩. Developer Experience উন্নত করা
- Hot Reload — কোড পরিবর্তন করলে তাৎক্ষণিক ফলাফল
- Rich IDE Support — VS Code, Android Studio, IntelliJ
- Strong Analysis Tools
৪. High Performance
- AOT (Ahead-of-Time) compilation দিয়ে native-level performance
- JIT (Just-in-Time) compilation দিয়ে fast development cycle
⭐ Dart এর প্রধান বৈশিষ্ট্য (Key Features)
১. Object-Oriented Programming (OOP)
dartclass Animal { String name; int age; Animal(this.name, this.age); void speak() { print('$name is speaking!'); } } void main() { var cat = Animal('Cat', 3); cat.speak(); // Output: Cat is speaking! }
Dart এ সবকিছুই Object — এমনকি numbers, functions, null সবই object।
২. Strongly Typed Language
dart// Dart এ আপনি type নির্দিষ্ট করে দিতে পারেন String name = 'Rahim'; int age = 25; double salary = 50000.50; bool isActive = true; // অথবা var ব্যবহার করতে পারেন (type inference) var city = 'Dhaka'; // Dart নিজে বুঝে নেয় এটা String
৩. Null Safety
dart// Nullable variable (? চিহ্ন দিয়ে) String? nullableName; // এটা null হতে পারে // Non-nullable variable String nonNullableName = 'Hello'; // এটা কখনো null হতে পারবে না
৪. Asynchronous Programming Support
dartFuture<String> fetchData() async { await Future.delayed(Duration(seconds: 2)); return 'Data loaded!'; } void main() async { print('Loading...'); String data = await fetchData(); print(data); }
৫. Hot Reload (Flutter এর সাথে)
textকোড পরিবর্তন → Save → তাৎক্ষণিক UI Update ⏱️ মিলিসেকেন্ডের মধ্যে পরিবর্তন দেখা যায়
৬. Cross-Platform Support
text📱 Mobile → Flutter (Android + iOS) 🌐 Web → Dart Web (dart2js, dart2wasm) 🖥️ Desktop → Flutter Desktop (Windows, macOS, Linux) ⚙️ Server → Dart Server (shelf, dart_frog) 💻 CLI → Command-line tools
৭. Garbage Collection
textDart এর নিজস্ব Garbage Collector আছে যা: → অব্যবহৃত memory স্বয়ংক্রিয়ভাবে মুক্ত করে → Generational garbage collection ব্যবহার করে → Developer কে manual memory management করতে হয় না
৮. Mixins Support
dartmixin Flyable { void fly() => print('Flying!'); } mixin Swimmable { void swim() => print('Swimming!'); } class Duck with Flyable, Swimmable { void quack() => print('Quack!'); } void main() { var duck = Duck(); duck.fly(); // Flying! duck.swim(); // Swimming! duck.quack(); // Quack! }
৯. Extension Methods
dartextension StringExtension on String { String capitalize() { return '${this[0].toUpperCase()}${substring(1)}'; } } void main() { print('hello'.capitalize()); // Hello }
১০. Isolates (Concurrency)
dart// Dart এ Thread এর বদলে Isolate ব্যবহার হয় // প্রতিটি Isolate এর নিজস্ব memory থাকে import 'dart:isolate'; void heavyTask(String message) { print('Heavy task: $message'); } void main() { Isolate.spawn(heavyTask, 'Processing...'); }
⚙️ Dart কিভাবে কাজ করে? (How Dart Works)
Dart এর Compilation Modes:
text┌─────────────────────────────────────────────┐ │ DART COMPILATION │ ├─────────────────┬───────────────────────────┤ │ JIT (Dev) │ AOT (Production) │ │ │ │ │ • Development │ • Production release │ │ • Hot Reload │ • Native machine code │ │ • Dart VM তে │ • Fast startup │ │ চলে │ • Optimized performance │ │ • Debugging │ • No Dart VM needed │ │ সুবিধা │ │ └─────────────────┴───────────────────────────┘
১. JIT (Just-in-Time) Compilation
textSource Code (.dart) ↓ Dart VM ↓ Intermediate Code ↓ Machine Code (Runtime এ) ↓ Output ✅ সুবিধা: Hot Reload, Fast Development ❌ অসুবিধা: Slightly slower execution
২. AOT (Ahead-of-Time) Compilation
textSource Code (.dart) ↓ AOT Compiler ↓ Native Machine Code (.exe / .apk / .ipa) ↓ Direct Execution ✅ সুবিধা: Fast execution, No VM needed ❌ অসুবিধা: No Hot Reload
৩. Dart-to-JavaScript Compilation (Web এর জন্য)
textSource Code (.dart) ↓ dart2js / DDC Compiler ↓ JavaScript Code (.js) ↓ Browser এ চলে ✅ সুবিধা: Web support
৪. Dart-to-WebAssembly (নতুন)
textSource Code (.dart) ↓ dart2wasm Compiler ↓ WebAssembly (.wasm) ↓ Browser এ চলে (faster than JS)
Dart Execution Architecture:
text┌──────────────────────────────────┐ │ Dart Source Code │ │ (.dart files) │ └───────────┬──────────────────────┘ │ ┌───────┴───────┐ │ │ ▼ ▼ ┌────────┐ ┌──────────┐ │ DartVM │ │ Compiler │ │ (JIT) │ │ (AOT) │ └───┬────┘ └────┬─────┘ │ │ ▼ ▼ ┌────────┐ ┌──────────┐ │Bytecode│ │ Native │ │ │ │ Machine │ │ │ │ Code │ └───┬────┘ └────┬─────┘ │ │ ▼ ▼ ┌──────────────────────────┐ │ Application Output │ │ (Mobile/Web/Desktop/CLI) │ └──────────────────────────┘
🛠️ Dart এর ব্যবহার (Uses of Dart)
১. 📱 Mobile App Development (Flutter)
textFlutter + Dart = Cross-platform Mobile Development একটি কোডবেস → Android + iOS অ্যাপ উদাহরণ: • Google Pay • Alibaba • BMW App • eBay Motors • Reflectly
২. 🌐 Web Development
dart// Dart দিয়ে web application তৈরি // AngularDart বা Flutter Web ব্যবহার করে import 'dart:html'; void main() { querySelector('#output')?.text = 'Hello from Dart!'; }
৩. 🖥️ Desktop Application
textFlutter Desktop দিয়ে: • Windows Application • macOS Application • Linux Application সব একই Dart কোডবেস থেকে!
৪. ⚙️ Server-Side Development
dart// Dart দিয়ে backend/server তৈরি // shelf, dart_frog, serverpod ইত্যাদি framework ব্যবহার করে import 'package:shelf/shelf.dart'; import 'package:shelf/shelf_io.dart' as io; Response _handler(Request request) { return Response.ok('Hello from Dart Server!'); } void main() async { var server = await io.serve(_handler, 'localhost', 8080); print('Server running on port ${server.port}'); }
৫. 💻 Command-Line Tools (CLI)
dart// Dart দিয়ে CLI tool তৈরি void main(List<String> arguments) { if (arguments.isEmpty) { print('Usage: dart tool.dart <name>'); return; } print('Hello, ${arguments[0]}!'); }
৬. 🎮 Game Development
textFlutter + Flame Engine দিয়ে 2D Game তৈরি করা যায়
৭. 🤖 IoT (Internet of Things)
textDart দিয়ে IoT device এর জন্য software তৈরি করা সম্ভব
🔄 Dart vs Other Languages (তুলনামূলক বিশ্লেষণ)
Dart vs JavaScript
| বিষয় | Dart | JavaScript |
|---|---|---|
| Type System | Strongly Typed | Weakly Typed |
| Null Safety | Built-in ✅ | না (TypeScript এ আছে) |
| OOP | Class-based ✅ | Prototype-based |
| Compilation | AOT + JIT | JIT only |
| Threading | Isolates | Web Workers |
| Mobile Dev | Flutter | React Native |
| Learning Curve | মাঝারি | সহজ |
| Performance | দ্রুত | তুলনামূলক ধীর |
| Package Manager | pub | npm |
Dart vs Java
| বিষয় | Dart | Java |
|---|---|---|
| Syntax | সংক্ষিপ্ত ও পরিষ্কার | verbose |
| Null Safety | Built-in ✅ | Optional (limited) |
| Cross-Platform | Flutter দিয়ে ✅ | Platform-specific |
| Hot Reload | আছে ✅ | নেই |
| File Extension | .dart | .java |
| Compilation | AOT + JIT | JIT (JVM) |
| Mobile Dev | Flutter | Android Native |
| Learning Curve | সহজ | মাঝারি |
Dart vs Python
| বিষয় | Dart | Python |
|---|---|---|
| Type System | Static Typed | Dynamic Typed |
| Speed | দ্রুত | তুলনামূলক ধীর |
| Mobile Dev | Flutter ✅ | Kivy (সীমিত) |
| Web Dev | Flutter Web | Django/Flask |
| AI/ML | সীমিত | শ্রেষ্ঠ ✅ |
| Syntax | C-style | Indentation-based |
| Use Case | App Development | Data Science, AI |
Dart vs Kotlin
| বিষয় | Dart | Kotlin |
|---|---|---|
| তৈরি করেছে | JetBrains | |
| Mobile Dev | Flutter (Cross-platform) | Android Native |
| iOS Support | Flutter দিয়ে ✅ | Kotlin Multiplatform |
| Performance | ভালো | ভালো |
| Community | বাড়ছে | বড় |
| Null Safety | আছে ✅ | আছে ✅ |
Dart vs Swift
| বিষয় | Dart | Swift |
|---|---|---|
| তৈরি করেছে | Apple | |
| Platform | Cross-platform | Apple ecosystem |
| Mobile Dev | Android + iOS | iOS only |
| Performance | ভালো | অসাধারণ |
| Learning Curve | সহজ | মাঝারি |
📊 Dart এর Data Types
Dart এর সকল Data Types:
textDart Data Types ├── Numbers │ ├── int (পূর্ণসংখ্যা) │ └── double (দশমিক সংখ্যা) ├── String (টেক্সট) ├── Boolean (bool - সত্য/মিথ্যা) ├── List (তালিকা/Array) ├── Set (অনন্য মানের সংগ্রহ) ├── Map (key-value জোড়া) ├── Rune (Unicode characters) ├── Symbol ├── Null ├── Record (Dart 3.0+) ├── enum └── dynamic / var / Object
বিস্তারিত উদাহরণ:
dartvoid main() { // ============ Numbers ============ int age = 25; // পূর্ণসংখ্যা double price = 99.99; // দশমিক সংখ্যা num anyNumber = 42; // int বা double যেকোনো print('Age: $age'); print('Price: $price'); // ============ String ============ String name = 'Rahim'; // Single quotes String greeting = "Hello"; // Double quotes String multiLine = ''' এটি একটি বহু লাইনের স্ট্রিং '''; // Multi-line string // String Interpolation String message = 'My name is $name and age is $age'; String calc = '2 + 2 = ${2 + 2}'; print(message); print(calc); // ============ Boolean ============ bool isStudent = true; bool isWorking = false; print('Is Student: $isStudent'); // ============ List (Array) ============ List<int> numbers = [1, 2, 3, 4, 5]; List<String> fruits = ['Apple', 'Banana', 'Mango']; var mixedList = [1, 'hello', true, 3.14]; // dynamic list print('First fruit: ${fruits[0]}'); print('List length: ${numbers.length}'); // List operations fruits.add('Orange'); // যোগ করা fruits.remove('Banana'); // মুছে ফেলা fruits.insert(1, 'Grape'); // নির্দিষ্ট স্থানে যোগ // ============ Set ============ Set<int> uniqueNumbers = {1, 2, 3, 4, 5}; Set<String> colors = {'Red', 'Green', 'Blue'}; uniqueNumbers.add(3); // ডুপ্লিকেট যোগ হবে না print('Set: $uniqueNumbers'); // {1, 2, 3, 4, 5} // ============ Map ============ Map<String, dynamic> student = { 'name': 'Karim', 'age': 20, 'isActive': true, 'grades': [90, 85, 92], }; print('Student Name: ${student['name']}'); print('Student Age: ${student['age']}'); // Map operations student['email'] = 'karim@email.com'; // নতুন key-value যোগ student.remove('isActive'); // মুছে ফেলা // ============ Record (Dart 3.0+) ============ var record = (1, 'hello', true); (int, String) namedRecord = (42, 'Dart'); print('Record: ${record.$1}, ${record.$2}'); // Named fields ({String name, int age}) person = (name: 'Rahim', age: 25); print('Person: ${person.name}, ${person.age}'); // ============ Enum ============ // (নীচে আলাদাভাবে দেখানো হয়েছে) // ============ Dynamic ============ dynamic anything = 'Hello'; anything = 42; // কোনো error হবে না anything = true; // কোনো error হবে না // ============ var ============ var city = 'Dhaka'; // Dart নিজে type নির্ধারণ করে (String) // city = 42; // ❌ Error! একবার type নির্ধারণ হলে বদলানো যায় না // ============ Rune ============ var heart = '\u2665'; var smiley = '\u{1F600}'; print('Heart: $heart, Smiley: $smiley'); } // Enum উদাহরণ enum Status { active, inactive, pending } // Enhanced Enum (Dart 2.17+) enum Color { red('FF0000'), green('00FF00'), blue('0000FF'); final String hex; const Color(this.hex); }
📦 Dart এর Variables
Variable ঘোষণার বিভিন্ন উপায়:
dartvoid main() { // ১. Type নির্দিষ্ট করে (Explicit Type) String name = 'Rahim'; int age = 25; double height = 5.8; bool isStudent = true; // ২. var ব্যবহার করে (Type Inference) var city = 'Dhaka'; // Dart নিজে String বুঝে নেয় var count = 10; // Dart নিজে int বুঝে নেয় // ৩. dynamic ব্যবহার করে dynamic value = 'Hello'; value = 42; // Type পরিবর্তন করা যায় value = true; // এটাও সম্ভব // ৪. final (একবার মান দিলে আর বদলানো যায় না) final String country = 'Bangladesh'; // country = 'India'; // ❌ Error! final currentTime = DateTime.now(); // Runtime এ মান নির্ধারণ // ৫. const (Compile-time constant) const double pi = 3.14159; const String appName = 'MyApp'; // const time = DateTime.now(); // ❌ Error! Runtime value হতে পারে না // ৬. late (পরে initialize করা হবে) late String description; // ... কিছু লজিক ... description = 'This is a description'; // পরে মান দেওয়া হলো print(description); }
final vs const পার্থক্য:
dartvoid main() { // final → Runtime এ মান নির্ধারণ হতে পারে final time1 = DateTime.now(); // ✅ কাজ করবে // const → শুধু Compile-time এ মান নির্ধারণ হতে হবে // const time2 = DateTime.now(); // ❌ Error! const maxAge = 100; // ✅ Compile-time এ জানা final userName = getUserName(); // ✅ Runtime এ পাওয়া } String getUserName() => 'Rahim';
text┌──────────────┬──────────────────┬─────────────────────┐ │ বৈশিষ্ট্য │ final │ const │ ├──────────────┼──────────────────┼─────────────────────┤ │ মান পরিবর্তন │ না ❌ │ না ❌ │ │ Runtime মান │ হ্যাঁ ✅ │ না ❌ │ │ Compile-time │ হ্যাঁ ✅ │ হ্যাঁ ✅ (শুধু এটাই) │ │ Memory │ প্রতিটি আলাদা │ শেয়ার করে │ └──────────────┴──────────────────┴─────────────────────┘
➕ Dart এর Operators
সকল ধরনের Operators:
dartvoid main() { // ============ ১. Arithmetic Operators ============ int a = 10, b = 3; print(a + b); // 13 (যোগ) print(a - b); // 7 (বিয়োগ) print(a * b); // 30 (গুণ) print(a / b); // 3.333... (ভাগ - double ফেরত দেয়) print(a ~/ b); // 3 (পূর্ণসংখ্যা ভাগ) print(a % b); // 1 (ভাগশেষ) // Increment / Decrement int x = 5; x++; // x = 6 x--; // x = 5 ++x; // x = 6 (prefix) --x; // x = 5 (prefix) // ============ ২. Comparison Operators ============ print(10 == 10); // true (সমান) print(10 != 5); // true (অসমান) print(10 > 5); // true (বড়) print(10 < 5); // false (ছোট) print(10 >= 10); // true (বড় বা সমান) print(10 <= 5); // false (ছোট বা সমান) // ============ ৩. Logical Operators ============ bool p = true, q = false; print(p && q); // false (AND - দুটোই true হতে হবে) print(p || q); // true (OR - যেকোনো একটি true) print(!p); // false (NOT - উল্টো) // ============ ৪. Assignment Operators ============ int c = 10; c += 5; // c = c + 5 → 15 c -= 3; // c = c - 3 → 12 c *= 2; // c = c * 2 → 24 c ~/= 4; // c = c ~/ 4 → 6 c %= 4; // c = c % 4 → 2 // ============ ৫. Null-aware Operators ============ String? nullableName; // ?? (null coalescing) - null হলে ডান পাশের মান String displayName = nullableName ?? 'Guest'; print(displayName); // Guest // ??= (null-aware assignment) - null হলে মান বসাও nullableName ??= 'Default Name'; print(nullableName); // Default Name // ?. (null-aware access) - null না হলে access করো String? text; print(text?.length); // null (error হবে না) // ! (null assertion) - আমি নিশ্চিত এটা null না String? definitelyNotNull = 'Hello'; print(definitelyNotNull!.length); // 5 // ============ ৬. Ternary Operator ============ int age = 20; String status = age >= 18 ? 'Adult' : 'Minor'; print(status); // Adult // ============ ৭. Type Test Operators ============ var value = 42; print(value is int); // true print(value is! String); // true // ============ ৮. Cascade Operator (..) ============ var list = [3, 1, 4, 1, 5] ..sort() ..add(9) ..removeAt(0); print(list); // [1, 3, 4, 5, 9] // ============ ৯. Spread Operator (...) ============ var list1 = [1, 2, 3]; var list2 = [0, ...list1, 4, 5]; print(list2); // [0, 1, 2, 3, 4, 5] // Null-aware spread List<int>? nullableList; var list3 = [1, ...?nullableList, 2]; print(list3); // [1, 2] // ============ ১০. Bitwise Operators ============ int m = 5; // 0101 int n = 3; // 0011 print(m & n); // 1 (AND: 0001) print(m | n); // 7 (OR: 0111) print(m ^ n); // 6 (XOR: 0110) print(~m); // -6 (NOT) print(m << 1); // 10 (Left shift) print(m >> 1); // 2 (Right shift) }
🔀 Dart এ Control Flow
১. If-Else Statement
dartvoid main() { int marks = 75; if (marks >= 80) { print('A+ Grade'); } else if (marks >= 70) { print('A Grade'); } else if (marks >= 60) { print('B Grade'); } else if (marks >= 50) { print('C Grade'); } else if (marks >= 40) { print('D Grade'); } else { print('Fail'); } // Output: A Grade }
২. Switch Statement
dartvoid main() { String grade = 'A'; switch (grade) { case 'A+': print('Outstanding!'); break; case 'A': print('Excellent!'); break; case 'B': print('Good!'); break; case 'C': print('Average'); break; default: print('Unknown grade'); } } // Dart 3.0+ Switch Expression void modernSwitch() { String grade = 'A'; String result = switch (grade) { 'A+' => 'Outstanding!', 'A' => 'Excellent!', 'B' => 'Good!', 'C' => 'Average', _ => 'Unknown grade', }; print(result); }
৩. For Loop
dartvoid main() { // Traditional for loop for (int i = 1; i <= 5; i++) { print('Count: $i'); } // For-in loop List<String> fruits = ['Apple', 'Banana', 'Mango']; for (String fruit in fruits) { print('Fruit: $fruit'); } // forEach fruits.forEach((fruit) { print('I like $fruit'); }); // forEach with arrow function fruits.forEach((fruit) => print('Eating $fruit')); }
৪. While Loop
dartvoid main() { // While loop int count = 1; while (count <= 5) { print('While Count: $count'); count++; } // Do-While loop (কমপক্ষে একবার চলবে) int num = 1; do { print('Do-While Count: $num'); num++; } while (num <= 5); }
৫. Break & Continue
dartvoid main() { // Break - loop থামিয়ে দেয় for (int i = 1; i <= 10; i++) { if (i == 5) break; print('Break example: $i'); } // Output: 1, 2, 3, 4 // Continue - বর্তমান iteration স্কিপ করে for (int i = 1; i <= 10; i++) { if (i % 2 == 0) continue; // জোড় সংখ্যা স্কিপ print('Continue example: $i'); } // Output: 1, 3, 5, 7, 9 }
৬. Pattern Matching (Dart 3.0+)
dartvoid main() { var data = ('Rahim', 25); // Destructuring var (name, age) = data; print('$name is $age years old'); // if-case var json = {'name': 'Karim', 'age': 30}; if (json case {'name': String name, 'age': int age}) { print('$name is $age'); } // Switch with patterns Object value = [1, 2, 3]; switch (value) { case int n: print('Integer: $n'); case String s: print('String: $s'); case List<int> l: print('List of ints: $l'); default: print('Unknown type'); } }
🔧 Dart এ Function
Function এর বিভিন্ন ধরন:
dart// ============ ১. Basic Function ============ void greet() { print('Hello, World!'); } // ============ ২. Function with Parameters ============ void greetPerson(String name) { print('Hello, $name!'); } // ============ ৩. Function with Return Type ============ int add(int a, int b) { return a + b; } // ============ ৪. Arrow Function (Single Expression) ============ int multiply(int a, int b) => a * b; void sayHi(String name) => print('Hi, $name!'); // ============ ৫. Optional Positional Parameters ============ void info(String name, [int? age, String? city]) { print('Name: $name'); if (age != null) print('Age: $age'); if (city != null) print('City: $city'); } // ============ ৬. Named Parameters ============ void createUser({ required String name, required String email, int age = 18, // default value String role = 'user', // default value }) { print('Name: $name, Email: $email, Age: $age, Role: $role'); } // ============ ৭. Anonymous Function (Lambda) ============ void anonymousExample() { var numbers = [1, 2, 3, 4, 5]; // Anonymous function var doubled = numbers.map((number) { return number * 2; }).toList(); // Arrow syntax var tripled = numbers.map((n) => n * 3).toList(); print(doubled); // [2, 4, 6, 8, 10] print(tripled); // [3, 6, 9, 12, 15] } // ============ ৮. Higher-Order Function ============ // Function যা অন্য function কে parameter হিসেবে নেয় void executeOperation(int a, int b, int Function(int, int) operation) { print('Result: ${operation(a, b)}'); } // ============ ৯. Recursive Function ============ int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); } // ============ ১০. Generator Function ============ // sync* - Iterable জেনারেটর Iterable<int> countTo(int max) sync* { for (int i = 1; i <= max; i++) { yield i; } } // async* - Stream জেনারেটর Stream<int> countToAsync(int max) async* { for (int i = 1; i <= max; i++) { await Future.delayed(Duration(seconds: 1)); yield i; } } // ============ ১১. Typedef ============ typedef MathOperation = int Function(int, int); int calculate(int a, int b, MathOperation op) => op(a, b); // ============ MAIN ============ void main() { // ১. Basic greet(); // ২. With Parameters greetPerson('Rahim'); // ৩. With Return print('Sum: ${add(5, 3)}'); // ৪. Arrow print('Product: ${multiply(4, 5)}'); // ৫. Optional Positional info('Karim'); info('Karim', 25); info('Karim', 25, 'Dhaka'); // ৬. Named Parameters createUser(name: 'Rahim', email: 'rahim@email.com'); createUser(name: 'Karim', email: 'karim@email.com', age: 25, role: 'admin'); // ৭. Anonymous anonymousExample(); // ৮. Higher-Order executeOperation(10, 5, add); executeOperation(10, 5, (a, b) => a - b); // ৯. Recursive print('5! = ${factorial(5)}'); // 120 // ১০. Generator for (var i in countTo(5)) { print('Generator: $i'); } // ১১. Typedef print('Calculate: ${calculate(10, 5, add)}'); }
🏗️ Dart এ OOP (Object-Oriented Programming)
১. Class & Object
dartclass Student { // Properties (Instance Variables) String name; int age; String department; // Constructor Student(this.name, this.age, this.department); // Named Constructor Student.fromMap(Map<String, dynamic> map) : name = map['name'], age = map['age'], department = map['department']; // Factory Constructor factory Student.create(String type) { switch (type) { case 'cse': return Student('Unknown', 18, 'CSE'); case 'eee': return Student('Unknown', 18, 'EEE'); default: return Student('Unknown', 18, 'General'); } } // Method void introduce() { print('Hi, I am $name, $age years old, from $department department.'); } // Getter String get info => '$name ($department)'; // Setter set studentAge(int newAge) { if (newAge > 0) age = newAge; } // toString override @override String toString() => 'Student(name: $name, age: $age, dept: $department)'; } void main() { // Object তৈরি var student1 = Student('Rahim', 20, 'CSE'); student1.introduce(); // Named Constructor var student2 = Student.fromMap({ 'name': 'Karim', 'age': 22, 'department': 'EEE', }); student2.introduce(); // Factory Constructor var student3 = Student.create('cse'); print(student3); // Getter & Setter print(student1.info); student1.studentAge = 21; }
২. Inheritance (উত্তরাধিকার)
dart// Parent Class class Animal { String name; int age; Animal(this.name, this.age); void eat() => print('$name is eating.'); void sleep() => print('$name is sleeping.'); } // Child Class class Dog extends Animal { String breed; Dog(String name, int age, this.breed) : super(name, age); void bark() => print('$name is barking! Woof!'); @override void eat() { super.eat(); // Parent method call print('$name is eating dog food.'); } } // Grandchild Class class Puppy extends Dog { Puppy(String name, int age, String breed) : super(name, age, breed); void play() => print('$name puppy is playing!'); } void main() { var dog = Dog('Rex', 5, 'German Shepherd'); dog.eat(); // Animal's eat + Dog's eat dog.bark(); // Dog's bark dog.sleep(); // Animal's sleep var puppy = Puppy('Buddy', 1, 'Labrador'); puppy.eat(); puppy.bark(); puppy.play(); }
৩. Abstraction
dart// Abstract Class abstract class Shape { // Abstract method (body নেই) double area(); double perimeter(); // Normal method void describe() { print('Area: ${area()}, Perimeter: ${perimeter()}'); } } class Circle extends Shape { double radius; Circle(this.radius); @override double area() => 3.14159 * radius * radius; @override double perimeter() => 2 * 3.14159 * radius; } class Rectangle extends Shape { double width, height; Rectangle(this.width, this.height); @override double area() => width * height; @override double perimeter() => 2 * (width + height); } void main() { // Shape shape = Shape(); // ❌ Error! Abstract class এর object হয় না Shape circle = Circle(5); circle.describe(); // Area: 78.53..., Perimeter: 31.41... Shape rect = Rectangle(4, 6); rect.describe(); // Area: 24, Perimeter: 20 }
৪. Interface (Implicit Interface)
dart// Dart এ আলাদা interface keyword নেই // প্রতিটি class একটি implicit interface class Printable { void printData() { print('Printing data...'); } } class Loggable { void log(String message) { print('LOG: $message'); } } // implements দিয়ে interface ব্যবহার class Report implements Printable, Loggable { @override void printData() { print('Printing report...'); } @override void log(String message) { print('Report LOG: $message'); } } void main() { var report = Report(); report.printData(); report.log('Report generated'); }
৫. Encapsulation
dartclass BankAccount { String _accountHolder; // Private (underscore দিয়ে) double _balance; // Private BankAccount(this._accountHolder, this._balance); // Getter double get balance => _balance; String get accountHolder => _accountHolder; // Public methods void deposit(double amount) { if (amount > 0) { _balance += amount; print('Deposited: $amount. New Balance: $_balance'); } } void withdraw(double amount) { if (amount > 0 && amount <= _balance) { _balance -= amount; print('Withdrawn: $amount. New Balance: $_balance'); } else { print('Insufficient balance!'); } } } void main() { var account = BankAccount('Rahim', 1000); // account._balance = 999999; // ❌ অন্য library থেকে access করা যাবে না account.deposit(500); account.withdraw(200); print('Balance: ${account.balance}'); }
৬. Polymorphism
dartclass Animal { void sound() => print('Some sound...'); } class Cat extends Animal { @override void sound() => print('Meow!'); } class Dog extends Animal { @override void sound() => print('Woof!'); } class Cow extends Animal { @override void sound() => print('Moo!'); } void makeSound(Animal animal) { animal.sound(); // Runtime এ সঠিক method call হবে } void main() { List<Animal> animals = [Cat(), Dog(), Cow()]; for (var animal in animals) { makeSound(animal); } // Output: // Meow! // Woof! // Moo! }
৭. Mixins
dartmixin Flyable { void fly() => print('${runtimeType} is flying!'); double flySpeed() => 100.0; } mixin Swimmable { void swim() => print('${runtimeType} is swimming!'); double swimSpeed() => 50.0; } mixin Walkable { void walk() => print('${runtimeType} is walking!'); } class Bird with Flyable, Walkable { String name; Bird(this.name); } class Fish with Swimmable { String name; Fish(this.name); } class Duck with Flyable, Swimmable, Walkable { String name; Duck(this.name); } void main() { var duck = Duck('Donald'); duck.fly(); // Duck is flying! duck.swim(); // Duck is swimming! duck.walk(); // Duck is walking! }
৮. Sealed Class, Class Modifiers (Dart 3.0+)
dart// Sealed Class - শুধু একই library তে extend/implement করা যায় sealed class Result {} class Success extends Result { final String data; Success(this.data); } class Failure extends Result { final String error; Failure(this.error); } class Loading extends Result {} // Exhaustive switch String handleResult(Result result) { return switch (result) { Success(data: var d) => 'Success: $d', Failure(error: var e) => 'Error: $e', Loading() => 'Loading...', }; } // Other class modifiers (Dart 3.0+) // base class → শুধু extend করা যায়, implement না // interface class → শুধু implement করা যায়, extend না // final class → extend বা implement কোনোটাই করা যায় না (অন্য library থেকে) // mixin class → mixin হিসেবেও ব্যবহার করা যায়
🛡️ Dart এ Null Safety
Null Safety কী?
textNull Safety = Runtime এ NullPointerException থেকে সুরক্ষা আগে (Null Safety ছাড়া): String name = null; // কোনো error নেই print(name.length); // 💥 Runtime crash! এখন (Null Safety সহ): String name = null; // ❌ Compile-time error! String? name = null; // ✅ Nullable type print(name?.length); // ✅ Safe access
Null Safety এর নিয়মাবলী:
dartvoid main() { // ১. Non-nullable (default) - null হতে পারে না String name = 'Rahim'; int age = 25; // name = null; // ❌ Error! // ২. Nullable (?) - null হতে পারে String? nullableName; // null int? nullableAge; // null nullableName = 'Karim'; // ✅ nullableName = null; // ✅ // ৩. Null check (?.) String? text; print(text?.length); // null (crash হবে না) print(text?.toUpperCase()); // null // ৪. Null assertion (!) String? definitelyNotNull = 'Hello'; print(definitelyNotNull!.length); // 5 (আমি নিশ্চিত null না) // ⚠️ সতর্কতা: null হলে crash হবে! // ৫. Null coalescing (??) String? username; String displayName = username ?? 'Guest'; print(displayName); // Guest // ৬. Null-aware assignment (??=) String? city; city ??= 'Dhaka'; // null হলে 'Dhaka' বসাও print(city); // Dhaka // ৭. Null-aware cascade (?..) List<int>? numbers; numbers?..add(1)..add(2)..add(3); // numbers null হলে কিছুই হবে না // ৮. Late keyword late String description; // ... পরে initialize ... description = 'Initialized later'; print(description); // ৯. Required keyword (named parameters এ) createUser(name: 'Rahim', email: 'rahim@email.com'); } void createUser({required String name, required String email}) { print('User: $name, Email: $email'); }
Null Safety Flow Analysis:
dartvoid processName(String? name) { // Dart flow analysis - null check এর পরে auto-promote if (name == null) { print('Name is null'); return; } // এখানে name আর nullable না! Dart নিজে বুঝে গেছে print(name.toUpperCase()); // ✅ কোনো error নেই print(name.length); // ✅ কোনো error নেই }
⏳ Dart এ Async Programming
Asynchronous Programming কী?
textSynchronous (সিনক্রোনাস): Task 1 → শেষ হওয়ার পর → Task 2 → শেষ হওয়ার পর → Task 3 (একটার পর একটা, সময়সাপেক্ষ) Asynchronous (অ্যাসিনক্রোনাস): Task 1 শুরু ──┐ Task 2 শুরু ──┤──→ সব একসাথে চলে → Results Task 3 শুরু ──┘ (দ্রুত, non-blocking)
Future (একটি মান পরে আসবে)
dart// Future = ভবিষ্যতে একটি মান পাওয়ার প্রতিশ্রুতি // ১. Basic Future Future<String> fetchUserData() async { // API call বা Database query simulate await Future.delayed(Duration(seconds: 2)); return 'User: Rahim, Age: 25'; } // ২. Future with error handling Future<String> fetchData() async { try { await Future.delayed(Duration(seconds: 1)); // throw Exception('Network Error!'); // Error simulate return 'Data fetched successfully!'; } catch (e) { return 'Error: $e'; } } // ৩. Multiple Futures Future<void> loadAllData() async { // Parallel execution var results = await Future.wait([ fetchUserData(), fetchData(), Future.delayed(Duration(seconds: 1), () => 'Extra data'), ]); print('All results: $results'); } // ৪. Future chaining (then) void futureChaining() { fetchUserData() .then((data) => print('Got: $data')) .catchError((error) => print('Error: $error')) .whenComplete(() => print('Done!')); } void main() async { print('Start'); String data = await fetchUserData(); print(data); print('End'); }
Stream (একাধিক মান সময়ের সাথে আসবে)
dart// Stream = সময়ের সাথে একাধিক মান আসতে থাকে // ১. Basic Stream Stream<int> countStream(int max) async* { for (int i = 1; i <= max; i++) { await Future.delayed(Duration(seconds: 1)); yield i; } } // ২. Stream Controller import 'dart:async'; void streamControllerExample() { var controller = StreamController<String>(); // Listen to stream controller.stream.listen( (data) => print('Received: $data'), onError: (error) => print('Error: $error'), onDone: () => print('Stream closed'), ); // Add data to stream controller.sink.add('Hello'); controller.sink.add('World'); controller.sink.add('Dart'); controller.close(); // Stream বন্ধ } // ৩. Stream Transformations void streamTransform() async { var stream = countStream(10); await for (var value in stream .where((n) => n % 2 == 0) // শুধু জোড় সংখ্যা .map((n) => n * 10)) { // ১০ দিয়ে গুণ print('Transformed: $value'); } } void main() async { // Listen to stream await for (var count in countStream(5)) { print('Count: $count'); } }
Isolate (Heavy Computation)
dartimport 'dart:isolate'; // Heavy computation function void heavyComputation(SendPort sendPort) { int result = 0; for (int i = 0; i < 1000000000; i++) { result += i; } sendPort.send(result); } void main() async { // ReceivePort তৈরি var receivePort = ReceivePort(); // Isolate spawn await Isolate.spawn(heavyComputation, receivePort.sendPort); // Result receive var result = await receivePort.first; print('Result: $result'); // Dart 2.19+ compute function (সহজ পদ্ধতি) // var result = await Isolate.run(() { // int sum = 0; // for (int i = 0; i < 1000000; i++) sum += i; // return sum; // }); }
💻 Dart Installation (ইনস্টলেশন)
Windows এ Dart Install:
Bash# Method 1: Chocolatey দিয়ে choco install dart-sdk # Method 2: Dart SDK সরাসরি ডাউনলোড # https://dart.dev/get-dart থেকে ডাউনলোড করুন # Method 3: Flutter SDK (Dart অন্তর্ভুক্ত) # Flutter install করলে Dart আলাদাভাবে install করতে হয় না
macOS এ Dart Install:
Bash# Homebrew দিয়ে brew tap dart-lang/dart brew install dart
Linux (Ubuntu/Debian) এ Install:
Bashsudo apt-get update sudo apt-get install apt-transport-https sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' sudo apt-get update sudo apt-get install dart
Version Check:
Bashdart --version # Dart SDK version: 3.x.x
প্রথম Dart প্রোগ্রাম:
dart// hello.dart void main() { print('হ্যালো, ডার্ট! 🎯'); print('Hello, Dart!'); }
Bash# Run করুন: dart run hello.dart # Output: # হ্যালো, ডার্ট! 🎯 # Hello, Dart!
অনলাইনে Dart চালানো:
text🌐 DartPad: https://dartpad.dev → কোনো installation ছাড়াই ব্রাউজারে Dart কোড লিখুন ও চালান!
IDE Setup:
text📝 VS Code: → "Dart" extension install করুন → "Flutter" extension install করুন (Flutter এর জন্য) 📝 Android Studio / IntelliJ IDEA: → "Dart" plugin install করুন → "Flutter" plugin install করুন
Dart Project তৈরি:
Bash# নতুন Console Application dart create my_app cd my_app dart run # নতুন Package dart create -t package my_package # নতুন Web Application dart create -t web my_web_app # Project Structure: my_app/ ├── bin/ │ └── my_app.dart # Entry point ├── lib/ │ └── my_app.dart # Library code ├── test/ │ └── my_app_test.dart # Tests ├── pubspec.yaml # Dependencies ├── analysis_options.yaml # Linting rules └── README.md
pubspec.yaml (Package Management):
YAMLname: my_app description: My Dart application version: 1.0.0 environment: sdk: '>=3.0.0 <4.0.0' dependencies: http: ^1.1.0 path: ^1.8.0 dev_dependencies: lints: ^3.0.0 test: ^1.24.0
Bash# Dependencies install dart pub get # Package যোগ করা dart pub add http dart pub add --dev test # Outdated packages দেখা dart pub outdated # Update dart pub upgrade
✅ Dart শেখার সুবিধা (Advantages)
text🚀 ১. Flutter Framework → Mobile, Web, Desktop — সব একই ভাষায় → একটি কোডবেস = ৬টি প্ল্যাটফর্ম 📚 ২. সহজে শেখা যায় → Java, C++, JavaScript জানলে Dart শেখা সহজ → Clear ও readable syntax → Excellent documentation ⚡ ৩. উচ্চ পারফরম্যান্স → AOT compilation = Native-level speed → Optimized garbage collection → Efficient memory management 🛡️ ৪. Null Safety → Compile-time এ null errors ধরা পড়ে → Runtime crash কমে যায় → Safer code 🔥 ৫. Hot Reload → কোড পরিবর্তনের তাৎক্ষণিক ফলাফল → Development speed বাড়ে → UI prototyping সহজ 🔧 ৬. Rich Tooling → dart analyze (static analysis) → dart format (code formatting) → dart doc (documentation generation) → dart test (testing) → dart compile (compilation) 📦 ৭. Package Ecosystem (pub.dev) → হাজার হাজার ready-made packages → Easy dependency management 🏢 ৮. Google Support → Google এর নিজস্ব ভাষা → Long-term support নিশ্চিত → Google Ads, Google Pay এ ব্যবহৃত 🌍 ৯. Cross-Platform → Android, iOS, Web, Windows, macOS, Linux → Embedded systems 🧪 ১০. Built-in Testing → Unit testing → Widget testing → Integration testing → Test framework built-in 🔄 ১১. Modern Language Features → Generics, Mixins, Extension Methods → Pattern Matching, Records → Sealed Classes, Class Modifiers 💰 ১২. চাকরির বাজার → Flutter Developer এর চাহিদা বাড়ছে → Competitive salary → Freelancing সুযোগ
❌ Dart এর অসুবিধা (Disadvantages)
text📉 ১. ছোট Community → JavaScript, Python এর তুলনায় community ছোট → Stack Overflow তে কম প্রশ্ন-উত্তর → তবে দ্রুত বাড়ছে 📚 ২. কম Third-party Libraries → npm (JavaScript) এর তুলনায় কম packages → তবে pub.dev ক্রমাগত বাড়ছে 🏢 ৩. সীমিত Enterprise Adoption → Java, C# এর মতো enterprise level এ কম ব্যবহৃত → তবে Google, Alibaba, BMW ব্যবহার করছে 🤖 ৪. AI/ML এ ব্যবহার কম → Python এর মতো AI/ML libraries নেই → Data Science এ ব্যবহার হয় না 🌐 ৫. Web Development এ কম জনপ্রিয় → JavaScript/TypeScript এর আধিপত্য → AngularDart বন্ধ হয়ে গেছে 📱 ৬. Native Feature Access → কিছু platform-specific feature এ plugin দরকার → Native (Swift/Kotlin) এর মতো সরাসরি access নেই 🎓 ৭. শেখার রিসোর্স কম → বাংলায় রিসোর্স আরও কম → English রিসোর্সও Python/JS এর তুলনায় কম
🔮 Dart এর ভবিষ্যৎ (Future of Dart)
text📈 Dart এর ভবিষ্যৎ উজ্জ্বল কারণ: 🌟 ১. Flutter এর জনপ্রিয়তা বৃদ্ধি → Flutter = Dart এর growth engine → প্রতি বছর Flutter user বাড়ছে → Google I/O তে বড় ঘোষণা 🚀 ২. WebAssembly (WASM) Support → dart2wasm compiler → Web এ near-native performance → JavaScript ছাড়াই web app 🤖 ৩. AI Integration → Google AI/Gemini API → Dart SDK → Flutter + AI = Smart Apps 📦 ৪. Dart 3.x ও তার পরে → Macros (compile-time code generation) → Better Metaprogramming → আরও pattern matching features → Performance improvements 🏗️ ৫. Server-Side Growth → Dart Frog, Serverpod → Full-stack Dart development → Backend + Frontend = Same language 🌐 ৬. Multi-platform Vision → "Any platform, one codebase" → Embedded systems support → Automotive (cars) UI 💼 ৭. Job Market → Flutter Developer demand ↑ → Remote job opportunities ↑ → Freelancing opportunities ↑
❓ FAQ — সচরাচর জিজ্ঞাসিত প্রশ্ন
১. Dart কি কঠিন?
textনা! Dart শেখা তুলনামূলক সহজ। যদি আপনি Java, C++, JavaScript বা Python এর যেকোনো একটি জানেন, তাহলে Dart ২-৪ সপ্তাহে শিখতে পারবেন। একদম নতুন হলে ১-২ মাস সময় লাগতে পারে।
২. Dart শেখার আগে কী জানতে হবে?
text✅ Programming এর basic concept (variable, loop, function) ✅ OOP concept (class, object, inheritance) — জানলে ভালো ❌ কোনো নির্দিষ্ট ভাষা জানা আবশ্যক না
৩. Dart নাকি JavaScript শেখা উচিত?
text→ Web Development → JavaScript → Mobile App Development → Dart (Flutter) → Full-stack → দুটোই শেখা ভালো → শুরু হিসেবে → আপনার লক্ষ্য অনুযায়ী সিদ্ধান্ত নিন
৪. Dart কি শুধু Flutter এর জন্য?
textনা! Dart ব্যবহার হয়: → Server-side development → CLI tools → Web applications → Desktop applications → IoT কিন্তু Flutter এর জন্যই সবচেয়ে বেশি জনপ্রিয়
৫. Dart কি Free?
textহ্যাঁ! Dart সম্পূর্ণ ফ্রি এবং open-source। BSD License এর অধীনে পাওয়া যায়।
৬. Dart দিয়ে কী কী বানানো যায়?
text📱 Android App 📱 iOS App 🌐 Web Application 🖥️ Windows Application 🖥️ macOS Application 🖥️ Linux Application ⚙️ Backend Server 💻 CLI Tools 🎮 2D Games (Flame engine) 🤖 IoT Applications
৭. Dart এর চাকরির বাজার কেমন?
text→ Flutter Developer এর চাহিদা প্রতি বছর বাড়ছে → Bangladesh, India তে প্রচুর Flutter job → Remote/International jobs available → Freelancing এও ভালো চাহিদা → Average Salary: ভালো (experience অনুযায়ী)
৮. Dart শেখার জন্য সেরা রিসোর্স কী?
text📖 Official Documentation: dart.dev 📖 DartPad (Online): dartpad.dev 📖 Flutter Documentation: flutter.dev 📹 YouTube: Free tutorials 📚 Udemy/Coursera: Paid courses 📖 Books: "Dart in Action", "Dart Apprentice"
৯. Dart 3.0 এ কী নতুন এসেছে?
text→ Records (Tuple-like data) → Pattern Matching → Sealed Classes → Class Modifiers (base, interface, final, mixin) → Switch Expressions → 100% Sound Null Safety → Better Performance
১০. Flutter ছাড়া কি Dart শেখা দরকার?
textFlutter শিখতে হলে Dart জানা আবশ্যক! আগে Dart এর basics শিখুন, তারপর Flutter শুরু করুন। Dart basics → OOP → Async → তারপর Flutter
🎯 সারসংক্ষেপ (Summary)
text┌─────────────────────────────────────────────────┐ │ DART সারসংক্ষেপ │ ├─────────────────────────────────────────────────┤ │ │ │ 🏷️ কী: Google এর open-source programming │ │ language │ │ │ │ 📅 কবে: ২০১১ সালে প্রথম ঘোষণা │ │ │ │ 👨💻 কে: Lars Bak & Kasper Lund (Google) │ │ │ │ 🎯 কেন: Cross-platform app development │ │ (Flutter এর জন্য) │ │ │ │ ⭐ বৈশিষ্ট্য: │ │ • Object-Oriented │ │ • Strongly Typed │ │ • Null Safety │ │ • AOT + JIT Compilation │ │ • Async/Await Support │ │ • Hot Reload │ │ │ │ 🛠️ ব্যবহার: │ │ • Mobile App (Flutter) │ │ • Web App │ │ • Desktop App │ │ • Server-side │ │ • CLI Tools │ │ │ │ ✅ সুবিধা: সহজ, দ্রুত, cross-platform, │ │ Google support │ │ │ │ ❌ অসুবিধা: ছোট community, AI/ML এ কম │ │ │ │ 🔮 ভবিষ্যৎ: উজ্জ্বল (Flutter + WASM + AI) │ │ │ └─────────────────────────────────────────────────┘
🏁 শেষ কথা
Dart হলো আধুনিক software development এর একটি শক্তিশালী হাতিয়ার। Flutter এর সাথে মিলিত হয়ে এটি cross-platform app development এ বিপ্লব এনেছে। আপনি যদি mobile app development শিখতে চান, তাহলে Dart শেখা অবশ্যই আপনার জন্য একটি সেরা সিদ্ধান্ত হবে।
"Learn Dart Today, Build Tomorrow's Apps!" 🎯🚀
এই আর্টিকেলটি সহায়ক মনে হলে শেয়ার করুন এবং Dart শেখা শুরু করুন! ✨

Follow Us
Were this world an endless plain, and by sailing eastward we could for ever reach new distances