API संदर्भ
इथेरियम API
Core API
गाइड

Ethereum के लिए Dart और Flutter टूल्स

Dart और Flutter डेवलपर Ethereum विकास के लिए Web3Dart का उपयोग कर सकते हैं, जिससे क्रॉस-प्लेटफॉर्म मोबाइल और वेब अनुप्रयोग सक्षम होते हैं।

ध्यान दें!
नमस्ते! बस एक मित्रवत सूचना: यह पृष्ठ आपको काम करने का एक ठोस अवलोकन देने के लिए है Dart/Flutter अनुरोध। व्यावहारिक कोड उदाहरणों के लिए, हमारा देखें API Methods documentation जहां आप सभी समर्थित भाषाओं में उपयोग के लिए तैयार उदाहरण पाएंगे!

# Web3Dart लाइब्रेरी

Dart और Flutter इकोसिस्टम के लिए प्राथमिक Ethereum लाइब्रेरी, जो व्यापक ब्लॉकचेन इंटरैक्शन क्षमताएँ प्रदान करती है।

import 'package:web3dart/web3dart.dart';
import 'package:http/http.dart';

class EthereumService {
  final Web3Client client;

  EthereumService(String rpcUrl) : client = Web3Client(rpcUrl, Client());

  Future<EtherAmount> getBalance(String address) async {
    final addr = EthereumAddress.fromHex(address);
    return await client.getBalance(addr);
  }

  Future<String> sendTransaction({
    required Credentials credentials,
    required String to,
    required BigInt amount,
  }) async {
    final transaction = await client.sendTransaction(
      credentials,
      Transaction(
        to: EthereumAddress.fromHex(to),
        value: EtherAmount.fromBigInt(EtherUnit.wei, amount),
      ),
    );
    return transaction;
  }
}
  • GitHub: web3dart
  • Pub.dev: web3dart package
  • विशेषताएँ:
    • क्रॉस-प्लेटफॉर्म मोबाइल dApps के लिए Flutter समर्थन
    • Flutter विजेट के साथ सहज एकीकरण
    • पूर्ण कॉन्ट्रैक्ट इंटरैक्शन क्षमताएँ
    • सुरक्षित लेनदेन हस्ताक्षर और सत्यापन
    • BIP-39/44 समर्थन के साथ HD वॉलेट एकीकरण
    • ENS रिज़ॉल्यूशन और एकीकरण
    • ERC-20 और ERC-721 टोकन मानकों का समर्थन
    • गैस अनुमान और अनुकूलन

महत्वपूर्ण नोट: अप्रत्याशित लेनदेन विफलताओं को रोकने के लिए लेनदेन बनाते समय हमेशा गैस सीमा निर्दिष्ट करें। Web3Dart लाइब्रेरी गैस का अनुमान लगाने का प्रयास करेगी लेकिन प्रोडक्शन अनुप्रयोगों के लिए स्पष्ट मान की सिफारिश की जाती है।

# Flutter एकीकरण उदाहरण

वॉलेट बैलेंस प्रदर्शित करने के लिए Web3Dart का उपयोग करने वाले Flutter विजेट का उदाहरण:

import 'package:flutter/material.dart';
import 'package:web3dart/web3dart.dart';

class WalletWidget extends StatefulWidget {
  
  _WalletWidgetState createState() => _WalletWidgetState();
}

class _WalletWidgetState extends State<WalletWidget> {
  final ethereum = EthereumService('YOUR_ETHEREUM_NODE_URL');
  EtherAmount? balance;

  Future<void> updateBalance() async {
    final newBalance = await ethereum.getBalance('YOUR_ADDRESS');
    setState(() {
      balance = newBalance;
    });
  }

  
  Widget build(BuildContext context) {
    return Card(
      child: Padding(
        padding: EdgeInsets.all(16.0),
        child: Column(
          children: [
            Text('Balance: ${balance?.getValueInUnit(EtherUnit.ether)} ETH'),
            ElevatedButton(
              onPressed: updateBalance,
              child: Text('Refresh Balance'),
            ),
          ],
        ),
      ),
    );
  }
}

प्रदर्शन टिप: प्रोडक्शन Flutter ऐप्स के लिए, कैशिंग तंत्र और बैकग्राउंड रिफ्रेश पैटर्न को लागू करने पर विचार करें ताकि अत्यधिक RPC कॉल से बचा जा सके जो ऐप की प्रतिक्रियाशीलता को प्रभावित कर सकती हैं।

# स्मार्ट कॉन्ट्रैक्ट एकीकरण

पूर्ण टाइप सुरक्षा के साथ Dart में स्मार्ट कॉन्ट्रैक्ट्स के साथ काम करना:

class SmartContractService {
  final Web3Client client;
  final DeployedContract contract;

  SmartContractService(String rpcUrl, String contractAddress, String abi)
      : client = Web3Client(rpcUrl, Client()),
        contract = DeployedContract(
          ContractAbi.fromJson(abi, 'YourContract'),
          EthereumAddress.fromHex(contractAddress),
        );

  Future<List<dynamic>> callFunction(
    String functionName,
    List<dynamic> params,
  ) async {
    final function = contract.function(functionName);
    final result = await client.call(
      contract: contract,
      function: function,
      params: params,
    );
    return result;
  }
}

सुरक्षा नोट: Flutter अनुप्रयोगों में निजी कुंजियों को संभालते समय, संवेदनशील क्रेडेंशियल्स की सुरक्षा के लिए flutter_secure_storage जैसे सुरक्षित स्टोरेज समाधानों का उपयोग करें। अपने एप्लिकेशन कोड में कभी भी निजी कुंजियों को हार्डकोड न करें।

# त्रुटि नियंत्रण और उपयोगिताएँ

मजबूत Ethereum अनुप्रयोगों के लिए Dart में उचित त्रुटि नियंत्रण:

class EthereumException implements Exception {
  final String message;
  final dynamic originalError;

  EthereumException(this.message, [this.originalError]);

  
  String toString() => 'EthereumException: $message';
}

extension EtherAmountExtension on EtherAmount {
  String formatEther([int decimals = 4]) {
    return getValueInUnit(EtherUnit.ether).toStringAsFixed(decimals);
  }
}

यह भी देखें

हमें बेहतर बनाने में मदद करें!
इस पृष्ठ को साझा करें और हमें आपके लिए और भी बेहतर उत्पाद बनाने में मदद करें।