Неизвестная метамаска метода в приложении флаттера dex
Когда я запускаю код, подключаюсь к метамаске и появляется подтверждение txn, он показывает неизвестный метод. Но я хочу, чтобы он показывал swapExactETHfromTokens из смарт-контракта routev2 UniSwap и выполнял функцию.
- Примечание: аби и адрес контракта верны. Я тестировал некоторые чистые функции.
Future<void> loginUsingMetamask() async {
final connector = WalletConnect(
bridge: 'https://bridge.walletconnect.org',
clientMeta: const PeerMeta(
name: 'Nika',
description: 'An app for converting pictures to NFT',
url: 'https://nikaguru.page.link/start',
icons: [
'https://files.gitbook.com/v0/b/gitbook-legacy-files/o/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
]));
try {
var session = await connector.createSession(onDisplayUri: (uri) async {
_uri = uri;
print(uri);
await launchUrlString(
'metamask://wc?uri=$uri',
mode: LaunchMode.externalNonBrowserApplication,
);
});
// var token1 = await uni.getDataT1();
var token2 = await uni.getDataT2();
var weth_addr = await uniSc.getPureSmartContract('WETH', []);
//print(weth_addr[0].toString() + 'WETHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
//print(uni.parseToAddress(weth_addr.toString()));
var xx = await uniSc.runRouteSCFunc(
'swapExactETHForTokens',
[
// BigInt.from(0.00001),
BigInt.from(100000000000),
[
uni.parseToAddress(weth_addr[0].toString()),
uni.parseToAddress('0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'),
],
EthereumAddress.fromHex(session.accounts[0]),
BigInt.from(DateTime.now().millisecondsSinceEpoch / 1000 + 300),
],
session.accounts[0],
);
var a = await EthereumWalletConnectProvider(connector).sendTransaction(
from: session.accounts[0],
to: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
data: xx,
gas: 90000,
value: BigInt.from(100000000000000),
gasPrice: BigInt.from(2000),
);
print(a.toString());
setState(() {
_session = session;
});
} catch (exp) {
print(exp);
}
connector.on(
'connect',
(session) => setState(
() {
_session = _session;
},
));
connector.on(
'session_update',
(payload) => setState(() {
_session = payload;
}));
connector.on(
'disconnect',
(payload) => setState(() {
_session = null;
}));
connector.on('callEvent', (event) => print(event));
}
с хх есть
DeployedContract contract =
await getContract(routev2ContractAddress, routev2Abi);
ContractFunction function = contract.function(functionName);
var a = Transaction.callContract(
contract: contract,
function: function,
parameters: args,
// // gasPrice: EtherAmount.inWei(BigInt.from(10000000)),
// // maxGas: 100000,
// // from: EthereumAddress.fromHex(sender),
// // nonce: 1,
// // value: EtherAmount.inWei(BigInt.from(1000000000)),
).data;