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