[英]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.