-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Description
i am trying to connect flutter with safe multisig wallet in app.safe.global/sepolia and
i tried to connect it with the documentation like this code snippet below and everything other than safe works like metamask but safe says the image i posted below and my code snippet is also attached help

my code snippet is
if (session != null && session.topic != null && session.address != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestReadContract(
deployedContract: _contract,
functionName: 'balanceOf',
rpcUrl: 'https://rpc.sepolia.org/',
parameters: [
EthereumAddress.fromHex(accountAddress.toString()),
],
);
if (result != null) {
setState(() {
_walletBalance = result.toString();
});
debugPrint('Wallet Balance: $result');
} else {
debugPrint('Error: result is null');
setState(() {
_walletBalance = 'Error';
});
}
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
setState(() {
_walletBalance = 'Error';
});
}
}
Future<void> _getTotalSupply() async {
try {
setState(() {
_totalSupply = "has passed";
});
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
final result = await _w3mService.requestReadContract(
deployedContract: _contract,
functionName: 'totalSupply',
rpcUrl: 'https://rpc.sepolia.org/',
);
if (result != null) {
setState(() {
_totalSupply = result.toString();
});
debugPrint('Wallet Balance: $result');
} else {
debugPrint('Error: result is null');
setState(() {
_totalSupply = 'Error';
});
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
setState(() {
_totalSupply = 'Error';
});
}
}
Future<void> name() async {
try {
setState(() {
_name = "has passed";
});
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
final result = await _w3mService.requestReadContract(
deployedContract: _contract,
functionName: 'name',
rpcUrl: 'https://rpc.sepolia.org/',
);
if (result != null) {
setState(() {
_name = result.toString();
});
debugPrint('Wallet Balance: $result');
} else {
debugPrint('Error: result is null');
setState(() {
_name = 'Error';
});
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
setState(() {
_name = 'Error';
});
}
}
Future<void> symbol() async {
try {
setState(() {
_symbol = "has passed";
});
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
final result = await _w3mService.requestReadContract(
deployedContract: _contract,
functionName: 'symbol',
rpcUrl: 'https://rpc.sepolia.org/',
);
if (result != null) {
setState(() {
_symbol = result.toString();
});
debugPrint('Wallet Balance: $result');
} else {
debugPrint('Error: result is null');
setState(() {
_symbol = 'Error';
});
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
setState(() {
_symbol = 'Error';
});
}
}
void _onPersonalSign() async {
const _chainId = "11155111";
var session = _w3mService.session;
await _w3mService.launchConnectedWallet();
if (session!.topic != null) {
var hash = await _w3mService.web3App?.request(
topic: session.topic!,
chainId: 'eip155:$_chainId',
request: SessionRequestParams(
method: 'personal_sign',
params: ['GM from W3M flutter!!', '0x009d1ce4bcc09492cb1dbe87724bdfbda9694612'],
),
);
debugPrint(hash);
}
}
void transferUSDT() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.USDT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.USDT_ABI), "USDT"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'transfer',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
to: EthereumAddress.fromHex('0x0d7bCe289D74790A4771e38b73F4CB56085cc296'),
value: EtherAmount.inWei(BigInt.from(10).pow(6)),
),
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void transferSTLO() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'transfer',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
to: EthereumAddress.fromHex('0x0d7bCe289D74790A4771e38b73F4CB56085cc296'),
value: EtherAmount.fromInt(EtherUnit.finney, 10000),
),
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void approveUSDT() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.USDT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.USDT_ABI), "USDT"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'approve',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
),
parameters: [EthereumAddress.fromHex(constants.SWAPPER_ADRESS), BigInt.from(1000000)],
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void createSteeloUser() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'createSteeloUser',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
),
parameters: ['Hello world!'],
);
}
} catch (e) {
debugPrint('Error : $e');
}
}
void stakeSteelo() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = EthereumAddress.fromHex(session.address!);
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'steeloBalanceOf',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
value: EtherAmount.fromInt(EtherUnit.finney, 10),
from: EthereumAddress.fromHex('0x007e867674976AC9c22C1fcEd1721893A937a187'),
),
// parameters: [],
);
}
} catch (e) {
debugPrint('Error : $e');
}
}
void swapUSDT() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.SWAPPER_ADRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.SWAPPER_ABI), "Swapper"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'swapUSDT',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
),
parameters: [BigInt.from(1000000)],
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void approveSTLO() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.CONTRACT_ADDRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.CONTRACT_ABI), "steeloDiamond"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'approve',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
),
parameters: [EthereumAddress.fromHex(constants.SWAPPER_ADRESS), BigInt.from(190) * BigInt.from(10).pow(18)],
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void swapSTLO() async {
try {
const _chainId = "11155111";
await _w3mService.launchConnectedWallet();
_contractAddress = EthereumAddress.fromHex(constants.SWAPPER_ADRESS);
_contract = DeployedContract(ContractAbi.fromJson(jsonEncode(constants.SWAPPER_ABI), "Swapper"), _contractAddress!);
var session = _w3mService.session;
if (session != null && session.topic != null) {
final accountAddress = session.address!;
final result = await _w3mService.requestWriteContract(
topic: session.topic!,
deployedContract: _contract,
functionName: 'swapSTLO',
rpcUrl: 'https://rpc.sepolia.org/',
chainId: 'eip155:$_chainId',
transaction: Transaction(
from: EthereumAddress.fromHex(accountAddress.toString()),
),
parameters: [BigInt.from(190) * BigInt.from(10).pow(18)],
);
}
} catch (e) {
debugPrint('Error fetching wallet balance: $e');
}
}
void _initializeService() async {
W3MChainPresets.chains.putIfAbsent('11155111', () => _sepoliaChain);
_w3mService = W3MService(
projectId: "f346fee6117a12f3844a1f37fd6166b3",
logLevel: LogLevel.error,
metadata: const PairingMetadata(
name: "W3M Flutter",
description: "W3M Flutter test app",
url: 'https://www.walletconnect.com/',
icons: ['https://web3modal.com/images/rpc-illustration.png'],
redirect: Redirect(
native: 'w3m://',
universal: 'https://www.walletconnect.com',
),
),
);
await _w3mService.init();
_setUpNetwork();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(height: 5),
Text("Wallet Balance: $_walletBalance"),
SizedBox(height: 5),
Text("Total Supply: $_totalSupply"),
SizedBox(height: 5),
Text("Token Name: $_name"),
SizedBox(height: 5),
Text("Total Symbol: $_symbol"),
],
),
W3MConnectWalletButton(service: _w3mService),
W3MNetworkSelectButton(service: _w3mService),
W3MAccountButton(service: _w3mService),
ElevatedButton(onPressed: transferUSDT, child: const Text("transfer 1 USDT")),
ElevatedButton(onPressed: transferSTLO, child: const Text("transfer 10 STLO")),
ElevatedButton(onPressed: approveUSDT, child: const Text("approve 1 USDT")),
ElevatedButton(onPressed: swapUSDT, child: const Text("swap 1 USDT")),
ElevatedButton(onPressed: approveSTLO, child: const Text("approve 190 STLO")),
ElevatedButton(onPressed: swapSTLO, child: const Text("swap 190 STLO")),
ElevatedButton(onPressed: createSteeloUser, child: const Text("createSteeloUser")),
ElevatedButton(onPressed: stakeSteelo, child: const Text("stakeSteelo")),
],
);
}
}
const _chainId = "11155111";
final _sepoliaChain = W3MChainInfo(
chainName: 'Sepolia',
namespace: 'eip155:$_chainId',
chainId: _chainId,
tokenName: 'ETH',
rpcUrl: 'https://rpc.sepolia.org/',
blockExplorer: W3MBlockExplorer(
name: 'Sepolia Explorer',
url: 'https://sepolia.etherscan.io/',
),
);
Metadata
Metadata
Assignees
Labels
No labels