我正在使用dart将我的应用程序连接到Metamask。扫描QR代码或移动深链接所有工作良好,并立即连接到钱包。
我面临的问题是,当我重新启动应用程序,我的钱包不再连接到应用程序。每次我不得不用一个深链接/QR代码重新连接我的钱包到应用程序。
即使在重新启动应用程序之后,还有什么方法可以与钱包保持连接吗?
我就是这样连接到钱包的
final connector = WalletConnect(
bridge: 'https://bridge.walletconnect.org',
clientMeta: const PeerMeta(
name: 'WalletConnect',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
);
// Subscribe to events
connector.on('connect', (session) => print(session));
connector.on('session_update', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));
// Create a new session
if (!connector.connected) {
final session = await connector.createSession(
chainId: 4160,
onDisplayUri: (uri) {
launchUrl(Uri.parse(uri));
},
);
print(session);
}发布于 2022-05-24 03:17:39
我使用存储包来解决这个问题。
首先,初始化钱包连接存储。
WalletConnectSecureStorage sessionStorage = WalletConnectSecureStorage();之后,当您成功地连接到钱包连接(因为我使用了dart),您将从钱包连接实例中获得dart。
并将WalletConnectSession存储到sessionStorage,如下所述
sessionStorage.store(walletConnect.session)完成此操作后,会话将成功地存储在sessionStorage中。
现在,在sessionStorage initState中,我们将从获取会话,并将其分配给walletConnect实例,如下所示
final session = await UserDataUtils.sessionStorage.getSession();
// Create a connector
walletConnect = WalletConnect(
bridge: 'https://bridge.walletconnect.org',
session: session,
sessionStorage: sessionStorage,
clientMeta: const PeerMeta(
name: 'WalletConnect',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
);您还可以注册侦听器。
walletConnect.registerListeners(onConnect: (status) {
print(status);
}, onDisconnect: () {
print('Disconnect');
});https://stackoverflow.com/questions/72273585
复制相似问题