Home > front end >  how to forward a method in a file
how to forward a method in a file

Time:01-15

how do I use a method defined in another code section in the same file

import 'package:flutter/material.dart';

import 'package:flutter_web3/flutter_web3.dart';

class MetamaskProvider extends ChangeNotifier {
  static const operationChain = 4;
  String currentAddress = '';
  int currentChain = -1;
  bool get isEnabled => ethereum != null;
  bool get isInOperatingChain => currentChain == operationChain;
  bool get isConnected => isEnabled && currentAddress.isNotEmpty;

  Future<void> connect() async {
    if (isEnabled) {
      final accs = await ethereum!.requestAccount();
      if (accs.isNotEmpty) currentAddress = accs.first;
      currentChain = await ethereum!.getChainId();
      notifyListeners();
    }
    void clear() {
      currentAddress = '';
      currentChain = -1;
    }

    
      }
      init() {
      if (isEnabled) {
        ethereum!.onAccountsChanged((accounts) {
          clear();
        });
        ethereum!.onAccountsChanged((accounts) {
          clear();
        });
    }
  }
}

error thrown when trying to use the "clean" method: The method 'clear' isn't defined for the type 'MetamaskProvider'.

CodePudding user response:

You have to move the method clear() from connect() method to outside of it. Then, you will be able to access clear() inside init().

class MetamaskProvider extends ChangeNotifier {
  static const operationChain = 4;
  String currentAddress = '';
  int currentChain = -1;
  bool get isEnabled => ethereum != null;
  bool get isInOperatingChain => currentChain == operationChain;
  bool get isConnected => isEnabled && currentAddress.isNotEmpty;

  void clear() {
    currentAddress = '';
    currentChain = -1;
  }
  
  Future<void> connect() async {
    if (isEnabled) {
      final accs = await ethereum!.requestAccount();
      if (accs.isNotEmpty) currentAddress = accs.first;
      currentChain = await ethereum!.getChainId();
      notifyListeners();
    }
  }

  init() {
    if (isEnabled) {
      ethereum!.onAccountsChanged((accounts) {
        clear();
      });
      ethereum!.onAccountsChanged((accounts) {
        clear();
      });
    }
  }
}
  • Related