initialize method

Future<void> initialize({
  1. required NetworkConfig defaultNetwork,
  2. required String privateKey,
  3. required EIP6963ProviderInfo providerInfo,
  4. List<NetworkConfig> additionalNetworks = const [],
  5. WalletDialogTheme? theme,
})

Implementation

Future<void> initialize({
  required NetworkConfig defaultNetwork,
  required String privateKey,
  required EIP6963ProviderInfo providerInfo,
  List<NetworkConfig> additionalNetworks = const [],
  WalletDialogTheme? theme,
}) async {
  // Configure dialog service theme
  _dialogService.configureTheme(theme ?? WalletDialogTheme());

  // Configure provider info
  _eip6963ProviderInfo = providerInfo;

  _updateNetwork(defaultNetwork);

  // Initialize Web3 client
  _web3client = Web3Client(
    defaultNetwork.rpcUrls.first,
    Client(),
  );

  // Initialize credentials
  _credentials = EthPrivateKey.fromHex(privateKey);

  // Initialize handlers
  _txHandler = TransactionHandler(
    _web3client!,
    _credentials!,
    int.parse(defaultNetwork.chainId.substring(2), radix: 16),
  );
  _signingHandler = SigningHandler(_credentials!);

  // Setup initial state
  _state = WalletState(
    chainId: defaultNetwork.chainId,
    address: getAddressFromPrivateKey(privateKey),
    isConnected: getAddressFromPrivateKey(privateKey) !=
        null, // Tự động connect khi private key hợp lệ
  );

  // Add networks
  _addNetwork(defaultNetwork);
  for (var network in additionalNetworks) {
    _addNetwork(network);
  }
}