簡體   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