如何将 web3 中的合同与 flutter 连接起来
How to connect contract in web3 with flutter
我尝试将 web3 中的合同与 flutter 和 运行 中的一个方法联系起来。我们的 react-js 开发人员给我这些代码以连接到 getMoney
方法:
const web3 = new Web3(Web3.givenProvider ||"https://rinkeby.infura.io/v3/...");
const contactList = new web3.eth.Contract(CONTACT_ABI, CONTACT_ADDRESS);
const getMoney = await contactList.methods.getMoney().call();
console.log(getMoney);
我尝试使用 flutter_web3 包连接到元掩码和合约:
String abi = await rootBundle.loadString("assets/json/Counter.json");
final contract = Contract(CONTACT_ADDRESS, abi, Web3Provider("https://rinkeby.infura.io/v3/..."),);
int money = await contract.call("getMoney");
print(money.toString());
但我无法连接到合同并调用 getMoney
方法。你能帮帮我吗?
如果我没理解错的话,你想从合约中调用一个方法。我用 web3dart and http 包来做到这一点。另外,你需要做这些工作:
- 首先,你需要一个abi文件。在你的情况下,将你的 Counter.json 文件放在 lib 目录中并将其重命名为
counter.abi.json
.
- 如web3dart#dart-code-generator所说,您必须在
dev_dependency
中添加build_runner
,在终端中添加运行 pub run build_runner build
。
- 然后,您现在会找到一个 .g.dart 文件,其中包含与合约交互的代码,您必须使用该 class.
然后,初始化这些代码:
Client httpClient = Client();
Web3Client ethClient = Web3Client("https://rinkeby.infura.io/v3/...", httpClient);
并从合约中调用一个方法:
var contractAbi = await Counter(address: EthereumAddress.fromHex(contractAddress), client: ethClient);
var money = await contractAbi.getMoney();
我尝试将 web3 中的合同与 flutter 和 运行 中的一个方法联系起来。我们的 react-js 开发人员给我这些代码以连接到 getMoney
方法:
const web3 = new Web3(Web3.givenProvider ||"https://rinkeby.infura.io/v3/...");
const contactList = new web3.eth.Contract(CONTACT_ABI, CONTACT_ADDRESS);
const getMoney = await contactList.methods.getMoney().call();
console.log(getMoney);
我尝试使用 flutter_web3 包连接到元掩码和合约:
String abi = await rootBundle.loadString("assets/json/Counter.json");
final contract = Contract(CONTACT_ADDRESS, abi, Web3Provider("https://rinkeby.infura.io/v3/..."),);
int money = await contract.call("getMoney");
print(money.toString());
但我无法连接到合同并调用 getMoney
方法。你能帮帮我吗?
如果我没理解错的话,你想从合约中调用一个方法。我用 web3dart and http 包来做到这一点。另外,你需要做这些工作:
- 首先,你需要一个abi文件。在你的情况下,将你的 Counter.json 文件放在 lib 目录中并将其重命名为
counter.abi.json
. - 如web3dart#dart-code-generator所说,您必须在
dev_dependency
中添加build_runner
,在终端中添加运行pub run build_runner build
。 - 然后,您现在会找到一个 .g.dart 文件,其中包含与合约交互的代码,您必须使用该 class.
然后,初始化这些代码:
Client httpClient = Client();
Web3Client ethClient = Web3Client("https://rinkeby.infura.io/v3/...", httpClient);
并从合约中调用一个方法:
var contractAbi = await Counter(address: EthereumAddress.fromHex(contractAddress), client: ethClient);
var money = await contractAbi.getMoney();