【问题标题】:Solana wallet in FlutterFlutter 中的 Solana 钱包
【发布时间】:2021-10-02 07:26:22
【问题描述】:

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

我试过了-

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

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

感谢任何帮助,谢谢!

【问题讨论】:

  • 为什么要特别使用 solana ?告诉我
  • 我参加了 solana 点火黑客马拉松并选择了 Flutter 作为 Web 应用程序。 Pub 还包含 Solana 包以与 json rpc api 交互,但似乎没有资源来集成幻像或其他钱包和签名交易。

标签: typescript flutter dart solana


【解决方案1】:

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

// 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 钱包。

编辑:为此,我去了docs for connecting a Phantom wallet。我还必须使用Dart-JS interop 才能使其工作。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • @Tyler2P 我编辑了评论并添加了 Phantom the Dart-JS interop 的文档
  • @user3889291 谢谢,也注意到我的互操作代码运行良好。问题在于调试环境,因为它不允许外部扩展。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-08-05
    • 2022-08-03
    • 2022-06-14
    • 2022-06-20
    • 2022-01-13
    • 2022-06-17
    • 2022-08-23
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多