如何将 Phantom 钱包连接到我的 Flutter 网络应用程序?
How to connect a Phantom wallet to my Flutter web app?
我一直在尝试将 Flutter 网络应用程序连接到 Phantom 钱包,但没有成功。没有发布 pub.dev 包来实现这一点,并且无法弄清楚如何使用 dart-js 互操作来做到这一点。
想知道是否有人已经弄明白了?
我有一段(粗略的)工作代码,可能对尝试完成相同任务的人有用:
// web/index.html
<script src="../lib/wallet.js" />
// wallet.js
class ClientWallet {
constructor() {
this.pubKey = '';
}
async connect() {
const resp = await window.solana.connect();
this.pubKey = resp.publicKey.toString();
}
address() {
return this.pubKey;
}
disconnect() {
window.solana.disconnect();
}
}
var walletModule = { ClientWallet: ClientWallet };
// main.dart
import 'package:js/js.dart';
import 'package:js/js_util.dart';
@JS('walletModule.ClientWallet')
class ClientWallet {
external Future<void> connect();
external void disconnect();
external String get pubKey;
}
Future<void> connectWallet() async {
ClientWallet wallet = ClientWallet();
await promiseToFuture(wallet.connect());
}
然后只需调用 connectWallet() 即可进行连接。这适用于我的 Phantom 钱包,现在我正在尝试集成 Solana Dart 包来签署交易。
我一直在尝试将 Flutter 网络应用程序连接到 Phantom 钱包,但没有成功。没有发布 pub.dev 包来实现这一点,并且无法弄清楚如何使用 dart-js 互操作来做到这一点。
想知道是否有人已经弄明白了?
我有一段(粗略的)工作代码,可能对尝试完成相同任务的人有用:
// web/index.html
<script src="../lib/wallet.js" />
// wallet.js
class ClientWallet {
constructor() {
this.pubKey = '';
}
async connect() {
const resp = await window.solana.connect();
this.pubKey = resp.publicKey.toString();
}
address() {
return this.pubKey;
}
disconnect() {
window.solana.disconnect();
}
}
var walletModule = { ClientWallet: ClientWallet };
// main.dart
import 'package:js/js.dart';
import 'package:js/js_util.dart';
@JS('walletModule.ClientWallet')
class ClientWallet {
external Future<void> connect();
external void disconnect();
external String get pubKey;
}
Future<void> connectWallet() async {
ClientWallet wallet = ClientWallet();
await promiseToFuture(wallet.connect());
}
然后只需调用 connectWallet() 即可进行连接。这适用于我的 Phantom 钱包,现在我正在尝试集成 Solana Dart 包来签署交易。