स्पंदन विस्तार के तरीके: उदाहरण के साथ एक गाइड

May 07 2023
यदि आप ऐसे ऐप्स बनाना चाहते हैं जो कई प्लेटफार्मों पर काम कर सकें, तो फ़्लटर विचार करने के लिए एक बेहतरीन ढांचा है। यह प्रोग्रामिंग लैंग्वेज डार्ट का उपयोग करता है और इसमें "एक्सटेंशन मेथड्स" नामक एक विशेषता है जो इसे वास्तव में लचीला बनाती है।

यदि आप ऐसे ऐप्स बनाना चाहते हैं जो कई प्लेटफार्मों पर काम कर सकें, तो फ़्लटर विचार करने के लिए एक बेहतरीन ढांचा है। यह प्रोग्रामिंग लैंग्वेज डार्ट का उपयोग करता है और इसमें "एक्सटेंशन मेथड्स" नामक एक विशेषता है जो इसे वास्तव में लचीला बनाती है। एक्सटेंशन विधियों के साथ, आप बिना किसी बड़े बदलाव के मौजूदा प्रकार के कोड में नई सुविधाएँ जोड़ सकते हैं। यह समय बचाता है और आपके कोड को प्रबंधित करना आसान बनाता है।

इस ब्लॉग पोस्ट में, हम एक्सप्लोर करेंगे कि विस्तार के तरीके क्या हैं, उनका उपयोग कैसे करें, और कुछ उदाहरण कैसे वे आपके स्पंदन कोड को बेहतर बना सकते हैं।

विस्तार के तरीके क्या हैं?

विस्तार विधियाँ अपने स्रोत कोड को बदले बिना या उपवर्ग बनाए बिना मौजूदा प्रकारों में नई विधियाँ जोड़ने का एक तरीका है। उन्हें 'एक्सटेंशन' कीवर्ड के साथ घोषित किया जाता है, जिसके बाद एक नाम और वे जिस प्रकार का विस्तार करते हैं। उदाहरण के लिए, मान लीजिए कि हम `isEven` नामक एक विधि को `int` प्रकार में जोड़ना चाहते हैं जो संख्या के सम होने पर सही और अन्यथा गलत होने पर रिटर्न देता है। हम इस तरह एक विस्तार विधि लिख सकते हैं:

extension IntExtensions on int {
  bool get isEven => this % 2 == 0;
}

int x = 42;
print(x.isEven); // true

extension StringExtensions on String {
  String repeat(int n) {
  String result = '';
    for (int i = 0; i < n; i++) {
      result += this;
    }
    return result;
  }
}

String s = 'Hello';
print(s.repeat(3)); // HelloHelloHello

मौजूदा विगेट्स, मॉडल या अन्य प्रकारों में नई कार्यक्षमता जोड़ने के लिए फ़्लटर में विस्तार विधियाँ उपयोगी हो सकती हैं। उदाहरण के लिए, मान लें कि हमारे पास `उपयोगकर्ता` नामक एक मॉडल वर्ग है जो हमारे ऐप में उपयोगकर्ता का प्रतिनिधित्व करता है:

class User {
  final String name;
  final int age;
  final String email;
  User(this.name, this.age, this.email);
}

extension UserExtensions on User {
  Widget toCard() {
      return Card(
        child: ListTile(
        leading: Icon(Icons.person),
        title: Text(name),
        subtitle: Text('$age years old'),
        trailing: Text(email),
    ),);
  }
}

User user = User('UserName', 27, '[email protected]');
Widget card = user.toCard();

स्पंदन में विस्तार विधियों का उपयोग करने का एक और उदाहरण मौजूदा विजेट्स में नए गुणों या विधियों को जोड़ना है। उदाहरण के लिए, मान लें कि हम `कंटेनर` विजेट में `बॉर्डररेडियस` नामक एक संपत्ति जोड़ना चाहते हैं जो इसकी सजावट के सीमा त्रिज्या को सेट करता है। हम इस तरह एक विस्तार विधि लिख सकते हैं:

extension ContainerExtensions on Container {
  Container get borderRadius => this.copyWith(
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(10),
    ),
  );
}

Container container = Container(
  color: Colors.blue,
  width: 100,
  height: 100,
);
Container roundedContainer = container.borderRadius;

उत्पादन में उपयोग के लिए फ़्लटर एक्सटेंशन के इन सहायक उदाहरणों को देखें।

उदाहरण 1: यदि सूची खाली है तो यह एक्सटेंशन सूची का पहला तत्व या शून्य लौटाता है।

extension ListExtension<T> on List<T> {
  T firstOrNull() => this.isEmpty ? null : this.first;
}

extension MyStringExtensions on String {
  String capitalize() {
    return "${this[0].toUpperCase()}${this.substring(1)}";
  }
}

extension ImageExtension on Image {
  double get aspectRatio => width / height;
}

extension StringExtension on String {
  dynamic parseJson() => json.decode(this);
}

extension WidgetExtension on Widget {
  void showSnackbar(BuildContext context, String message) {
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
      content: Text(message),
    ));
  }
}

extension NavigatorExtension on BuildContext {
  void navigateTo(String routeName, {Object arguments}) {
    Navigator.pushNamed(this, routeName, arguments: arguments);
  }
}

विस्तार विधियाँ डार्ट की एक शक्तिशाली विशेषता है जो आपको मौजूदा प्रकारों को संशोधित किए बिना या उपवर्ग बनाए बिना नई कार्यक्षमता जोड़ने की अनुमति देती है। मौजूदा विगेट्स, मॉडल या अन्य प्रकारों में नई कार्यक्षमता जोड़ने के लिए वे स्पंदन में उपयोगी हो सकते हैं। विस्तार विधियाँ आपके स्पंदन कोड को अधिक अभिव्यंजक, मॉड्यूलर और पुन: प्रयोज्य बनाकर बेहतर बना सकती हैं।