1

我想连接到任何 Solana 钱包,如 Phantom、Sollet、TrustWallet 等,但似乎没有要集成的包。

我试过了-

  1. 我为 Phantom 尝试了 Dart JS 互操作,但这也不能正常工作。

也许从 Typescript 到 Dart 的 Solana 钱包适配器转换可能会导致任何解决方案。

任何帮助表示赞赏,谢谢!

4

2 回答 2

2

我有一段(粗略的)工作代码

// 网页/index.html

<script src="../lib/wallet.js" />

// 钱包.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() 即可进行连接。这适用于我的幻影钱包。

编辑:为了做到这一点,我去了连接幻影钱包的文档。我还必须使用Dart-JS 互操作才能使其工作。

于 2021-11-04T13:47:36.603 回答
0

目前没有办法做到这一点,除非存在额外的外部包。你最好的选择可能是将钱包绑定添加到社区 Dart 包中:https ://github.com/cryptoplease/cryptoplease-dart

于 2021-10-04T15:16:40.113 回答