Dart: यह क्या है, Flutter भाषा की विशेषताएं और प्रोग्रामिंग

लेखक: IT Sectr प्रकाशित: 2026-02-10 पढ़ने का समय: 12 मिनट

Dart Google की एक प्रोग्रामिंग भाषा है, जिसे विशेष रूप से क्रॉस-प्लेटफ़ॉर्म Flutter फ्रेमवर्क के लिए बनाया गया है। यह बिजली की तेज़ हॉट रीलोड के लिए JIT संकलन और रिलीज़ बिल्ड में नेटिव प्रदर्शन के लिए AOT संकलन को जोड़ती है। Dart का उपयोग न केवल मोबाइल डेवलपमेंट में बल्कि वेब एप्लिकेशन (AngularDart) और सर्वर-साइड समाधानों के लिए भी किया जाता है। भाषा की क्षमताओं के बारे में अधिक जानकारी के लिए आधिकारिक Dart दस्तावेज़ीकरण देखें।

मुख्य बिंदु

  • Dart — Google द्वारा बनाई गई Flutter भाषा, JIT/AOT संकलन के साथ
  • Null safety — Dart 2.12 से sound null safety शून्य null त्रुटियों की गारंटी देता है
  • Isolate — साझा मेमोरी के बिना पृथक थ्रेड्स के माध्यम से समानांतरता
  • Flutter — UI फ्रेमवर्क जो Skia/Impeller के माध्यम से विजेट रेंडर करता है
  • Pub.dev — Dart और Flutter के लिए 45,000+ लाइब्रेरीज़ वाला पैकेज मैनेजर

Dart क्या है?

Dart C-जैसे सिंटैक्स वाली एक प्रोग्रामिंग भाषा है, जिसे Google द्वारा लार्स बक (Eclipse के निर्माता) के नेतृत्व में विकसित किया गया है। पहला रिलीज़ 2011 में हुआ था, लेकिन Dart को वास्तविक लोकप्रियता 2018 में Flutter 1.0 के रिलीज़ के साथ मिली। भाषा उपयोगकर्ता इंटरफ़ेस बनाने के लिए डिज़ाइन की गई है: इसमें स्ट्रीम, फ्यूचर और रिएक्टिव पैटर्न के लिए अंतर्निहित समर्थन है।

Dart का दर्शन «प्रदर्शन और उत्पादकता का संतुलन» है। भाषा दो संकलन रणनीतियों का समर्थन करती है: हॉट रीलोड के साथ डेवलपमेंट के लिए JIT (Just-In-Time) और नेटिव प्रदर्शन के साथ रिलीज़ बिल्ड के लिए AOT (Ahead-Of-Time)। JIT कंपाइलर मिलीसेकंड में चल रहे एप्लिकेशन में संशोधित कोड इंजेक्ट करता है, बिना APK पुनर्संकलन की आवश्यकता के — मोबाइल डेवलपमेंट में अन्य भाषाओं पर यह Dart का मुख्य लाभ है।

Dart की एक प्रमुख विशेषता sound null safety है, जो Dart 2.12 (2021) में पेश की गई। टाइप सिस्टम गारंटी देता है कि कोई वेरिएबल स्पष्ट घोषणा (int?) के बिना null नहीं हो सकता। यह संकलन समय पर NullPointerException को समाप्त करता है। Google के अनुसार, null safety अपनाने से प्रोडक्शन वातावरण में Flutter एप्लिकेशन में क्रैश दर 30% कम हुई।

Dart पारिस्थितिकी तंत्र

Dart पारिस्थितिकी तंत्र में तीन मुख्य क्षेत्र शामिल हैं: Flutter (मोबाइल और डेस्कटॉप एप्लिकेशन), AngularDart (वेब एप्लिकेशन) और Dart Server (सर्वर-साइड समाधान)। Flutter प्रमुख प्लेटफ़ॉर्म है: Statista (2025) के अनुसार, Flutter का उपयोग 46% क्रॉस-प्लेटफ़ॉर्म मोबाइल प्रोजेक्ट्स में किया जाता है, जो React Native (38%) और Xamarin (8%) से आगे है।

Dart सिंटैक्स: प्रकार, फ़ंक्शन और क्लास

Dart सिंटैक्स Java और JavaScript जैसा दिखता है लेकिन इसकी अपनी अनूठी संरचनाएं हैं। Dart में सब कुछ एक ऑब्जेक्ट है — यहां तक कि int, double और bool भी Object से इनहेरिट करते हैं। टाइपिंग वैकल्पिक है: var के रूप में घोषित वेरिएबल स्वचालित रूप से प्रकार का अनुमान लगाता है, लेकिन पठनीयता और प्रदर्शन के लिए स्पष्ट रूप से प्रकार निर्दिष्ट करने की अनुशंसा की जाती है।

मूल प्रकार और घोषणाएं

Dart int, double, String, bool, List, Set, Map, Record, Symbol और Runes का समर्थन करता है। Nullable प्रकार — ? प्रत्यय वाला कोई भी प्रकार (int?, String?)। ?? ऑपरेटर (null-aware) बाईं ओर null होने पर दाईं ओर का मान लौटाता है। कैस्केड नोटेशन (..) एक ही ऑब्जेक्ट पर संदर्भ दोहराए बिना कई विधियों को कॉल करने की अनुमति देता है।

dart
// Dart में मूल प्रकार और घोषणाएं
void main() {
  // स्पष्ट टाइपिंग
  int age = 25;
  double price = 19.99;
  String name = 'Dart';
  bool isValid = true;

  // Null safety — वेरिएबल null हो सकता है
  int? nullableAge = null;
  int result = nullableAge ?? 0; // null-aware ऑपरेटर

  // जेनेरिक के साथ संग्रह
  List<String> items = ['Dart', 'Flutter', 'Mobile'];
  Map<String, dynamic> config = {
    'version': '3.0',
    'mode': 'debug',
  };

  // कैस्केड नोटेशन
  final list = <String>[]
    ..add('one')
    ..add('two')
    ..sort();
}

// Record — अनाम अपरिवर्तनीय प्रकार
(String, int) user = ('Alice', 30);
print(user.$1); // 'Alice'

dynamic प्रकार टाइप जाँच को अक्षम करता है — इसका उपयोग केवल JSON या डायनामिक डेटा के साथ काम करते समय करें। Record Dart 3.0 में एक नया प्रकार है जो अलग क्लास बनाए बिना मानों को समूहित करने की अनुमति देता है। Null-aware ऑपरेटर ?? लंबी if-else जाँचों को बदलने वाला nullable मानों के साथ काम करने का मानक तरीका है।

क्लास और मिक्सिन

Dart में क्लास — एकल इनहेरिटेंस (extends), मिक्सिन (mixin) के माध्यम से बहुविध। Dart इंटरफ़ेस को अलग अवधारणा के रूप में समर्थन नहीं करता — कोई भी क्लास implement किया जा सकता है (implements)। मिक्सिन एक कंस्ट्रक्टर के बिना एक क्लास है जिसकी विधियों और फ़ील्ड को with कीवर्ड का उपयोग करके किसी भी क्लास में जोड़ा जा सकता है।

dart
// Dart में क्लास, इनहेरिटेंस और मिक्सिन
abstract class Animal {
  void sound(); // अमूर्त विधि
}

mixin Swimmer {
  void swim() => print('Swimming...');
}

mixin Flyer {
  void fly() => print('Flying...');
}

class Duck extends Animal with Swimmer, Flyer {
  @override
  void sound() => print('Quack!');
}

void main() {
  final duck = Duck();
  duck.sound(); // Quack!
  duck.swim();  // Swimming...
  duck.fly();   // Flying...
}

// नामित कंस्ट्रक्टर
class Config {
  final String env;

  Config.development() : env = 'dev';
  Config.production()  : env = 'prod';
}

Duck क्लास Animal से इनहेरिट करता है और दो मिक्सिन — Swimmer और Flyer का उपयोग करता है। यह डायमंड समस्या के बिना बहुविध इनहेरिटेंस प्रदर्शित करता है: मिक्सिन रैखिक रूप से हल किए जाते हैं (super chain)। नामित कंस्ट्रक्टर (Config.development) पूर्व निर्धारित पैरामीटर के साथ ऑब्जेक्ट बनाने के लिए स्टैटिक फ़ैक्टरी विधियों का विकल्प हैं।

Dart में अतुल्यकालिकता: Future, Stream और async/await

Dart में अतुल्यकालिकता Future (एकल मान), Stream (मानों का अनुक्रम) और async/await के माध्यम से कार्यान्वित की जाती है। Dart JavaScript के समान इवेंट लूप के साथ एक एकल-थ्रेडेड मॉडल का उपयोग करता है, लेकिन एक महत्वपूर्ण अंतर के साथ: लंबी गणनाएं UI को ब्लॉक नहीं करतीं क्योंकि Dart कोड Isolate में चलता है — साझा मेमोरी के बिना एक अलग थ्रेड।

Future एक अतुल्यकालिक संक्रिया का प्रतिनिधित्व करता है जो कुछ समय बाद पूरी होगी। Future लंबित (प्रतीक्षा), मान के साथ पूर्ण (सफलता) या त्रुटि के साथ पूर्ण (त्रुटि) स्थिति में हो सकता है। .then().catchError() श्रृंखला async/await का विकल्प है, लेकिन पठनीयता के लिए await का उपयोग करने की अनुशंसा की जाती है।

dart
// Future और Stream के साथ अतुल्यकालिक डेटा लोडिंग
import 'dart:convert';
import 'package:http/http.dart' as http;

class ApiService {
  final String baseUrl;

  ApiService(this.baseUrl);

  // एकल अनुरोध के लिए Future
  Future<Map<String, dynamic>> fetchUser(int id) async {
    final response = await http.get(
      Uri.parse('$baseUrl/users/$id'),
    );

    if (response.statusCode == 200) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to load user: ${response.statusCode}');
    }
  }

  // डेटा के अनुक्रम के लिए Stream
  Stream<int> countStream(int max) async* {
    for (var i = 1; i <= max; i++) {
      await Future.delayed(Duration(seconds: 1));
      yield i;
    }
  }
}

void main() async {
  final api = ApiService('https://api.example.com');

  // await का उपयोग
  final user = await api.fetchUser(1);
  print('User: ${user['name']}');

  // await for के साथ Stream प्रसंस्करण
  await for (final count in api.countStream(5)) {
    print('Count: $count');
  }
}

ApiService क्लास दो प्रकार की अतुल्यकालिकता प्रदर्शित करता है: HTTP अनुरोध के लिए Future (एकल प्रतिक्रिया) और अनुक्रमिक काउंटर के लिए Stream (async* और yield के साथ जनरेटर)। Stream सेंसर, जियोलोकेशन, Firebase Realtime Database के साथ काम करने के लिए प्रभावी है — जहां भी डेटा लगातार आता है। Isolate अलग मेमोरी का उपयोग करता है — डेटा SendPort/ReceivePort के माध्यम से प्रेषित होता है।

Dart और Flutter: एप्लिकेशन आर्किटेक्चर

Dart और Flutter एक एकल स्टैक बनाते हैं: Flutter UI फ्रेमवर्क है, Dart UI विवरण भाषा है। Flutter में, सब कुछ एक विजेट (Widget) है — एक बटन से लेकर पूरे एप्लिकेशन तक। विजेट stateful (परिवर्तनीय स्थिति के साथ) और stateless (अपरिवर्तनीय) हो सकते हैं। Dart घोषणात्मक UI का वर्णन करता है: build() एक विजेट ट्री लौटाता है जिसे Flutter Skia (या iOS पर Impeller) का उपयोग करके रेंडर करता है।

Flutter एप्लिकेशन संरचना

Dart में Flutter एप्लिकेशन main() → runApp(MyApp()) → MaterialApp से बना होता है। MaterialApp में रूटिंग (routes), थीम (theme) और स्थानीयकरण शामिल है। प्रत्येक स्क्रीन एक Scaffold है जिसमें AppBar, Body (आमतौर पर Column/ListView) और BottomNavigationBar होता है। Navigator.push/pop या नामित रूट्स के माध्यम से नेविगेशन।

dart
// Dart में सरल Flutter एप्लिकेशन
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Dart Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int _counter = 0;

  void _increment() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Dart + Flutter')),
      body: Center(
        child: Text('Counter: $_counter'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _increment,
        child: Icon(Icons.add),
      ),
    );
  }
}

HomeScreen विजेट आंतरिक स्थिति _counter के साथ एक StatefulWidget है। setState() को कॉल करना Flutter को UI को पुनर्निर्माण करने के लिए सूचित करता है — Dart कोड build() को फिर से चलाता है, एक नया विजेट ट्री बनाता है। Flutter कुशलतापूर्वक पुराने और नए ट्री की तुलना (diff) करता है, स्क्रीन के केवल बदले हुए हिस्सों को अपडेट करता है। Hot Reload _counter स्थिति को रीसेट किए बिना build() को बदलता है।

Dart संकलन: JIT बनाम AOT

Dart संकलन हाइब्रिड है: डेवलपमेंट के लिए JIT और प्रोडक्शन के लिए AOT। डीबग मोड में, Dart VM एक JIT कंपाइलर चलाता है जो कोड के हॉट-स्वैप की क्षमता के साथ बाइटकोड की व्याख्या करता है। रिलीज़ मोड में, dart compile exe या flutter build एक विशिष्ट आर्किटेक्चर (arm64, x86_64, armv7) के लिए एक नेटिव AOT बाइनरी बनाता है।

मोडसंकलननिष्पादन गतिबाइनरी आकारहॉट रीलोड
DebugJIT (VM)मध्यम~50 MBहाँ
ReleaseAOT (नेटिव)अधिकतम~15-20 MBनहीं
Webdart2jsब्राउज़र पर निर्भरपरिवर्तनशीलडेव सर्वर

डीबग मोड में Dart JIT संकलन ~1 सेकंड में हॉट रीलोड प्रदान करता है — डेवलपर एप्लिकेशन स्थिति खोए बिना UI परिवर्तन देखते हैं। AOT संकलन नेटिव Swift/Kotlin एप्लिकेशन के करीब प्रदर्शन देता है। Google के अनुसार, Dart AOT पर Flutter मध्य-श्रेणी के उपकरणों पर भी 60 FPS एनिमेशन प्राप्त करता है।

Dart डेवलपर उपकरण

Dart डेवलपर उपकरण में Dart SDK (dart कंपाइलर, dartanalyzer, dartfmt, pub), Flutter SDK और IDE प्लगइन शामिल हैं। Dart SDK Flutter SDK के साथ flutter/bin/cache/dart-sdk फ़ोल्डर में स्थापित होता है। Pub पैकेज मैनेजर है जो pubspec.yaml पढ़ता है और pub.dev से निर्भरताएं डाउनलोड करता है।

मुख्य उपकरण

dart analyze — स्थैतिक विश्लेषक जो प्रकार, अप्रयुक्त इम्पोर्ट और संभावित त्रुटियों की जाँच करता है। dart format — फ़ॉर्मेटर जो स्वचालित रूप से कोड को एक समान शैली में प्रारूपित करता है। dart doc — /// टिप्पणियों से दस्तावेज़ीकरण जनरेटर। Flutter DevTools — विजेट ट्री इंस्पेक्टर, लॉग, मेमोरी और नेटवर्क के साथ प्रोफाइलर। Dart VM Service — WebSocket के माध्यम से चल रहे एप्लिकेशन की डीबगिंग।

yaml
# pubspec.yaml — Dart प्रोजेक्ट कॉन्फ़िगरेशन
name: my_flutter_app
description: A new Flutter project.
version: 1.0.0

environment:
  sdk: '>=3.0.0 <4.0.0'

dependencies:
  flutter:
    sdk: flutter
  http: ^1.2.0
  provider: ^6.1.0
  shared_preferences: ^2.2.0
  json_annotation: ^4.8.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  build_runner: ^2.4.0
  json_serializable: ^6.7.0
  flutter_lints: ^3.0.0

pubspec.yaml फ़ाइल Dart प्रोजेक्ट निर्भरताओं का वर्णन करती है। environment:sdk फ़ील्ड Dart संस्करण निर्दिष्ट करता है — वर्तमान स्थिर 3.x है। Dependencies मुख्य लाइब्रेरी हैं, dev_dependencies परीक्षण और कोड जनरेशन के लिए हैं। json_annotation + json_serializable build_runner के माध्यम से JSON सीरियलाइज़ेशन कोड उत्पन्न करते हैं। flutter_lints विश्लेषक के लिए नियमों का एक सेट है।

अक्सर पूछे जाने वाले प्रश्न

Dart क्या है?

Dart Google (2011) की एक प्रोग्रामिंग भाषा है, जिसे Flutter के साथ क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट के लिए डिज़ाइन किया गया है। C-जैसे सिंटैक्स, मजबूत टाइपिंग, JIT और AOT संकलन का समर्थन करती है। sound null safety (Dart 2.12 से) और Future और Stream के माध्यम से अतुल्यकालिकता द्वारा विशिष्ट। मोबाइल, वेब और डेस्कटॉप एप्लिकेशन के लिए उपयोग की जाती है।

Dart JavaScript से कैसे अलग है?

Dart नेटिव कोड (AOT) या JS (dart2js) में संकलित होता है, JavaScript व्याख्या की जाती है। Dart में sound null safety के साथ मजबूत टाइपिंग, अंतर्निहित क्लास और मिक्सिन हैं। Dart की अतुल्यकालिकता Isolate (साझा मेमोरी के बिना अलग थ्रेड) पर बनी है, JS — Web Workers के साथ इवेंट लूप पर। मोबाइल परिदृश्यों में Dart AOT प्रदर्शन V8 JIT से 30-50% अधिक है।

Dart मोबाइल एप्लिकेशन में कैसे संकलित होता है?

Dart Dart Native के माध्यम से AOT में नेटिव ARM कोड में संकलित होता है। डीबग मोड में, Dart VM हॉट रीलोड के साथ JIT का उपयोग करता है। Flutter Engine (C++) Skia/Impeller के माध्यम से UI रेंडर करता है। Android के लिए — flutter build apk, iOS के लिए — flutter build ios। वेब बिल्ड dart2js या dart2wasm का उपयोग करता है। रिलीज़ APK का आकार 15-20 MB (AAB विभाजन के बिना) है।

Dart कौन से डेटा प्रकार का समर्थन करता है?

Dart प्रिमिटिव का समर्थन करता है: int, double, String, bool। संग्रह: List, Set, Map, Record। विशेष: Symbol, Runes, Null। सब कुछ एक ऑब्जेक्ट है, जिसमें प्रिमिटिव शामिल हैं। Null safety: int? null की अनुमति देता है, int कभी null नहीं। ??, ??= ऑपरेटर null के सुरक्षित संचालन के लिए। जेनेरिक: List<String>, Map<String, dynamic>।

Dart डेवलपमेंट के लिए किन उपकरणों की आवश्यकता है?

Flutter SDK में Dart SDK, Flutter Engine और विजेट लाइब्रेरी शामिल है। IDE — Flutter प्लगइन के साथ Android Studio या VS Code। DevTools — विजेट इंस्पेक्टर के साथ प्रोफाइलर। Pub.dev — 45,000+ लाइब्रेरीज़ वाला पैकेज मैनेजर। dart analyze और dart format उपकरण कोड गुणवत्ता सुनिश्चित करते हैं। JSON मॉडल के कोड जनरेशन के लिए Build_runner।

सारांश

  • Dart — Flutter के लिए Google की भाषा, JIT डेवलपमेंट और AOT प्रदर्शन को जोड़ती है
  • Sound null safety Dart 2.12 (+3.0) से — प्रकार स्तर पर अनिवार्य null सुरक्षा
  • अतुल्यकालिकता Future (एकल परिणाम), Stream (अनुक्रम), Isolate (समानांतरता) के माध्यम से
  • Flutter — घोषणात्मक UI फ्रेमवर्क जहां सब कुछ एक विजेट है (StatelessWidget / StatefulWidget)
  • Hot Reload — एप्लिकेशन स्थिति खोए बिना ~1 सेकंड में JIT कोड रीलोड
  • Pub.dev — पैकेज पारिस्थितिकी तंत्र (45,000+), pubspec.yaml के माध्यम से प्रबंधित
  • Flutter DevTools — विजेट इंस्पेक्टर, मेमोरी और नेटवर्क के साथ प्रोफाइलर

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें