繁体   English   中英

Flutter 网络托管应用无法识别外部功能

[英]Flutter web-hosted app doesn't recognize external functions

我在 GitHub 页面上托管了一个在 Flutter 上制作的网络,我正在使用Dart-JS 互操作来连接 Solana 钱包。 当我在本地测试时,我可以连接到它并且工作正常,但是一旦我在 GitHub Pages 上托管网络,我就会收到以下错误: Uncaught TypeError: p.isPhantomInstalled is not a function

这是我的 Dart 代码:

    @JS('walletModule.ClientWallet')
    class ClientWallet {
      external Future<void> connect();
      external void disconnect();
      external String get address;
      external Future<void> signTransaction();
      external bool isPhantomInstalled();
    }
    
    class WalletController extends GetxController {
    
      Future<void> connectWallet(context) async {
        ClientWallet wallet = ClientWallet();
        if (wallet.isPhantomInstalled()) {
          await promiseToFuture(wallet.connect());
          createSnackbar('success', 'Wallet Connected');
        } else {
          createSnackbar('error', 'No Phantom wallet detected');
        }
      }

这是我的JS代码:

class ClientWallet {

    constructor() {
        this.address = '';
    }

    async connect() {
        const resp = await window.solana.connect();
        this.address = resp.publicKey.toString();
    }

    address() {
        return this.address;
    }

    isPhantomInstalled() {
        return window.solana && window.solana.isPhantom;
    }

    disconnect() {
        window.solana.disconnect();
    }
}

var walletModule = { ClientWallet: ClientWallet };

似乎托管时,该应用程序无法识别外部功能? 我不知道为什么或如何解决它。

在阅读了您关于将 Phantom 钱包与 Flutter 连接的原始帖子后,我决定自己尝试一下,最终我遇到了与您相同的问题,直到精确的函数调用!

我的解决方案(解决方法)是使用独立函数而不是方法

我不知道为什么,但由于某种原因,Dart-JS 互操作在flutter build web之后停止处理类实例。 我的带有类实例的缩小的 JS 代码与flutter run -d chrome配合得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM