Dart Language का परिचय (Introduction to Dart Language)
Dart, Google द्वारा विकसित की गई एक शक्तिशाली प्रोग्रामिंग भाषा है, जो खासतौर से Flutter फ्रेमवर्क के लिए उपयोग की जाती है। यह एक ऑब्जेक्ट-ओरिएंटेड, क्लास-बेस्ड भाषा है जो fast और responsive ऐप्स बनाने के लिए जानी जाती है। Dart का सिंटैक्स JavaScript, Java, और C++ जैसी भाषाओं से मिलता-जुलता है, जिससे इसे सीखना और इस्तेमाल करना आसान हो जाता है।
इस अध्याय में आप जानेंगे:
- Dart का बेसिक परिचय
- Variables, Data Types और Functions का उपयोग
- Control Flow Statements (if-else, loops) और Classes
- Asynchronous Programming और Dart के प्रमुख फीचर्स
Flutter के साथ काम करने के लिए Dart का समझना बेहद ज़रूरी है, और इस अध्याय में आपको इसकी मजबूत नींव मिलेगी। Dart की सहायता से आप efficient और high-performance Flutter ऐप्स बना सकेंगे।
Dart के Key Features
Dart, Flutter के लिए उपयोग की जाने वाली प्रोग्रामिंग भाषा है और इसकी विशेषताएं इसे एक प्रभावशाली और शक्तिशाली भाषा बनाती हैं। नीचे Dart के कुछ प्रमुख फीचर्स दिए गए हैं:
1. Object-Oriented Programming (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
Dart एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) भाषा है। इसमें हर चीज़ क्लास और ऑब्जेक्ट पर आधारित होती है। OOP के चार प्रमुख concepts, यानी encapsulation, inheritance, polymorphism, और abstraction, को Dart में पूरी तरह से लागू किया जा सकता है। इससे बड़े और जटिल एप्लिकेशन्स को प्रबंधित करना आसान हो जाता है।
2. Asynchronous Programming (असिंक्रोनस प्रोग्रामिंग)
Dart में async और await जैसे keywords के माध्यम से asynchronous programming को आसानी से implement किया जा सकता है। इसका उपयोग नेटवर्क कॉल्स, डाटाबेस ऑपरेशन्स, और file handling जैसे tasks को efficient और responsive बनाने के लिए किया जाता है, ताकि एप्लिकेशन ब्लॉक न हो और यूज़र को बेहतर अनुभव मिले।
3. Strongly Typed Language (स्ट्रॉन्गली टाइप्ड भाषा)
Dart एक strongly typed language है, जहां variables की type को define करना होता है। हालांकि, Dart में type inference की सुविधा भी है, जहां compiler automatic types को पहचान सकता है। यह feature कोड की विश्वसनीयता और त्रुटियों को कम करता है।
4. JIT (Just-In-Time) और AOT (Ahead-Of-Time) Compilation
Dart दो प्रकार की कंपाइलिंग तकनीकों का समर्थन करता है:
- JIT (Just-In-Time): डेवलपमेंट के दौरान dynamic कंपाइलिंग, जिससे आप changes को तुरंत देख सकते हैं। यह hot-reload को सक्षम बनाता है।
- AOT (Ahead-Of-Time): production builds के लिए, कोड को native मशीन कोड में कंपाइल करता है, जिससे ऐप्स की परफॉर्मेंस तेज़ और स्मूद होती है।
5. Garbage Collection (गर्बेज कलेक्शन)
Dart में built-in garbage collection होती है, जो memory management को अपने आप handle करती है। इससे डेवलपर्स को memory leaks या manual memory allocation के बारे में चिंता करने की ज़रूरत नहीं होती, जिससे विकास प्रक्रिया सरल हो जाती है।
6. Cross-Platform Support (क्रॉस-प्लेटफ़ॉर्म सपोर्ट)
Dart एक versatile भाषा है, जिसका उपयोग आप mobile (Android और iOS), web, और desktop एप्लिकेशन्स बनाने के लिए कर सकते हैं। यह Flutter के साथ मिलकर क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट का एक बेहतरीन विकल्प बनाता है।
7. Easy to Learn (सीखने में आसान)
Dart का सिंटैक्स सरल और पढ़ने में आसान है, खासतौर से अगर आपको Java, JavaScript, या C++ का अनुभव है। इसका साफ-सुथरा सिंटैक्स और user-friendly structure इसे डेवलपर्स के लिए सीखने और उपयोग करने में आसान बनाता है।
8. Null Safety (नल सेफ्टी)
Dart में null safety feature है, जो compile-time पर ही null-related errors को पकड़ता है। इससे runtime errors कम होते हैं और एप्लिकेशन अधिक स्थिर बनती है। null safety feature ने Flutter में development को और भी सुरक्षित और कुशल बना दिया है।
9. Rich Standard Library (समृद्ध मानक लाइब्रेरी)
Dart के पास एक समृद्ध स्टैंडर्ड लाइब्रेरी है जो collection types, math operations, string manipulations, और asynchronous programming के लिए tools प्रदान करती है। यह लाइब्रेरी डेवलपर्स को अधिक सुविधाजनक और flexible तरीके से काम करने की सुविधा देती है।
10. Platform-Independent (प्लेटफॉर्म-इंडिपेंडेंट)
Dart platform-independent है, जिससे आप इसका उपयोग अलग-अलग ऑपरेटिंग सिस्टम्स पर कर सकते हैं, जैसे कि Windows, macOS, Linux, Android और iOS। एक ही कोड बेस से आप विभिन्न प्लेटफॉर्म्स के लिए एप्लिकेशन बना सकते हैं।
Variables, Functions, और Classes का विवरण (Dart Language)
Dart भाषा में प्रोग्रामिंग के तीन मुख्य स्तंभ — Variables (वेरिएबल्स), Functions (फंक्शंस) और Classes (क्लासेस) — का बेहद महत्वपूर्ण रोल होता है। ये तीनों concepts किसी भी object-oriented programming भाषा की नींव होते हैं। आइए इनके बारे में विस्तार से जानें:
1. Variables (वेरिएबल्स)
वेरिएबल्स प्रोग्रामिंग में किसी डेटा को स्टोर करने के लिए उपयोग किए जाते हैं। Dart में वेरिएबल्स का उपयोग विभिन्न डेटा types को स्टोर करने के लिए किया जा सकता है, जैसे int
, double
, String
, bool
, और var
.
वेरिएबल्स की घोषणा:
Dart में वेरिएबल्स को declare करना आसान है। आप किसी भी डेटा type का उपयोग करके वेरिएबल declare कर सकते हैं या var
का उपयोग करके type inference पर निर्भर कर सकते हैं।
उदाहरण:
int age = 25; // Integer type double pi = 3.14; // Double type String name = 'Rahul'; // String type bool isStudent = true; // Boolean type var city = 'Delhi'; // Dart automatically infers the type as String
Final और Const:
final
: अगर आपको वेरिएबल को केवल एक बार assign करना है और बाद में इसे change नहीं करना चाहते, तोfinal
keyword का उपयोग कर सकते हैं।const
: अगर वेरिएबल को compile-time पर ही एक value देनी हो और उसे बाद में कभी बदलना न हो, तोconst
का उपयोग होता है।
final birthYear = 1990; const piValue = 3.1416;
2. Functions (फंक्शंस)
Functions प्रोग्राम के किसी विशेष कार्य को encapsulate करने के लिए उपयोग किए जाते हैं। यह कोड को reusable और structured बनाने में मदद करते हैं। Dart में functions को नाम देकर declare किया जाता है और ये किसी भी डेटा type को return कर सकते हैं या void (कुछ भी return न करें) हो सकते हैं।
Function की संरचना:
returnType functionName(parameters) { // function body return value; // if returnType is not void }
उदाहरण:
// कोई मान नहीं लौटाने वाला फंक्शन (void) void greet(String name) { print('Hello, $name!'); } // एक मान लौटाने वाला फंक्शन (returnType: int) int add(int a, int b) { return a + b; } void main() { greet('Rahul'); // Output: Hello, Rahul! int sum = add(10, 20); print(sum); // Output: 30 }
Arrow Functions (शॉर्टहैंड फंक्शन):
Dart में आप एक लाइन के फंक्शंस के लिए =>
का उपयोग करके arrow functions भी बना सकते हैं।
int multiply(int x, int y) => x * y;
3. Classes (क्लासेस)
Dart एक object-oriented language है, और इसमें classes object बनाने के लिए एक ब्लूप्रिंट की तरह काम करती हैं। क्लासेस में properties (वेरिएबल्स) और methods (फंक्शंस) होते हैं जो object को कुछ कार्य करने की क्षमता प्रदान करते हैं।
Class की संरचना:
class ClassName { // properties String property1; int property2; // constructor ClassName(this.property1, this.property2); // method void displayInfo() { print('Property1: $property1, Property2: $property2'); } }
उदाहरण:
class Car { // properties String brand; int year; // constructor Car(this.brand, this.year); // method void displayDetails() { print('Brand: $brand, Year: $year'); } } void main() { // Object creation Car car1 = Car('Toyota', 2020); // Method call car1.displayDetails(); // Output: Brand: Toyota, Year: 2020 }
Constructors (कंस्ट्रक्टर्स):
Constructors एक special method होती हैं जो object create करते समय values assign करने का काम करती हैं। Dart में default और parameterized दोनों प्रकार के constructors हो सकते हैं।
class Student { String name; int age; // Constructor Student(this.name, this.age); } void main() { Student student1 = Student('Rahul', 20); print('Student Name: ${student1.name}, Age: ${student1.age}'); }
Inheritance (विरासत):
Dart में एक class दूसरी class से properties और methods को विरासत में ले सकती है। इसे inheritance कहा जाता है।
class Animal { void sound() { print('Animal makes a sound'); } } class Dog extends Animal { // Method overriding @override void sound() { print('Dog barks'); } } void main() { Dog dog = Dog(); dog.sound(); // Output: Dog barks }
Basic Dart program के उदाहरण
Example 1: Hello World Program
void main() { print('Hello, World!'); }
Output:
Hello, World!
Explanation:
main()
Dart प्रोग्राम का entry point होता है।print()
एक built-in function है जो output console में text दिखाता है।
Example 2: Variables और Data Types
void main() { // Variables declaration String name = 'Rahul'; int age = 25; double height = 5.9; bool isStudent = true; // Print variables print('Name: $name'); print('Age: $age'); print('Height: $height'); print('Is a student: $isStudent'); }
Output:
Name: Rahul Age: 25 Height: 5.9 Is a student: true
Explanation:
String
,int
,double
, औरbool
जैसे डेटा types का उपयोग करके variables declare किए जाते हैं।- Dart में,
print()
के अंदर$variableName
का उपयोग करके variables को string के साथ concatenate किया जाता है।
Example 3: Basic Arithmetic Operations
void main() { int a = 10; int b = 20; // Arithmetic operations int sum = a + b; int difference = a - b; int product = a * b; double quotient = a / b; int remainder = a % b; print('Sum: $sum'); print('Difference: $difference'); print('Product: $product'); print('Quotient: $quotient'); print('Remainder: $remainder'); }
Output:
Sum: 30 Difference: -10 Product: 200 Quotient: 0.5 Remainder: 10
Explanation:
- यह प्रोग्राम basic arithmetic operations को दिखाता है जैसे addition, subtraction, multiplication, division और remainder।
Example 4: If-Else Conditional Statement
void main() { int number = 10; if (number > 0) { print('$number is positive.'); } else if (number < 0) { print('$number is negative.'); } else { print('$number is zero.'); } }
Output:
10 is positive.
Explanation:
- यह प्रोग्राम
if-else
का उपयोग करके number की positivity या negativity को चेक करता है।
Example 5: For Loop
void main() { for (int i = 1; i <= 5; i++) { print('Number: $i'); } }
Output:
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
Explanation:
for
loop का उपयोग करके, हम एक निश्चित संख्या में iterations कर सकते हैं। यहाँ यह 1 से 5 तक की संख्या को print कर रहा है।
Example 6: Functions (with Return Type)
int add(int a, int b) { return a + b; } void main() { int sum = add(10, 20); print('Sum: $sum'); }
Output:
Sum: 30
Explanation:
- यह प्रोग्राम
add()
नामक एक function को दिखाता है जो दो numbers को जोड़ता है और उसेmain()
function में कॉल करता है।
Example 7: List in Dart
void main() { List<String> fruits = ['Apple', 'Banana', 'Mango']; for (String fruit in fruits) { print(fruit); } }
Output:
Apple Banana Mango
Explanation:
- Dart में
List
का उपयोग करके multiple items को store किया जाता है। यहां हमfor-in
loop के माध्यम से list के प्रत्येक item को print कर रहे हैं।
Example 8: Class and Object
class Car { String brand; int year; // Constructor Car(this.brand, this.year); // Method void displayDetails() { print('Brand: $brand, Year: $year'); } } void main() { Car car1 = Car('Toyota', 2020); car1.displayDetails(); }
Output:
Brand: Toyota, Year: 2020
Explanation:
- यह प्रोग्राम
Car
नामक class को define करता है और उसका object (car1
) बनाता है। फिर methoddisplayDetails()
का उपयोग करके details को print करता है।
Example 9: Asynchronous Programming with Future
Future<String> fetchData() async { return Future.delayed(Duration(seconds: 2), () => 'Data loaded'); } void main() async { print('Fetching data...'); String data = await fetchData(); print(data); }
Output:
Fetching data... Data loaded
Explanation:
async
औरawait
का उपयोग asynchronous operations के लिए किया जाता है। यह प्रोग्राम 2 सेकंड की देरी के बाद data को fetch करता है।