Flutter Web 从 Polkadot.js web3Enable 获取 Chrome 扩展信息

Flutter Web Get Chrome Extension info from Polkadot.js web3Enable

我希望为 flutter web 应用程序(在这里可以忽略移动案例)提供一种策略,以从 Polkadot 浏览器扩展中获取 Polkadot.js 钱包的 chrome 扩展信息。

我的第一个想法是使用 dart 的 js 库并使用 Polkadot 扩展 JS package 然后尝试从那里提取信息。但是,我不确定如何在 flutter 中正确使用它,因为它是一个充满依赖项的完整包,而不仅仅是一个 JS 文件。它也在 TS 而不是 JS 中。有什么想法吗?

例如,我需要一个 JS 文件才能调用它;并为了 flutter 依次调用 JS 文件:

import {
  web3Enable,
} from '@polkadot/extension-dapp';

通过写出一个“桥接”层,你可以轻松做到。

首先,创建一个普通的javascript(或typescript)应用程序(没有与Flutter相关)。您应该能够毫无问题地在 js/ts 代码中愉快地使用 polkadot 库。你可能需要学习一些关于如何正常开发js代码的知识(例如你可以使用npm依赖polkadot等)

一件小事是,您应该在 js/ts 代码中公开“公开”一些对象。例如,您的代码可能类似于 window.myFancyFunction = function() { call_some_polkadot_function(); }。当然你可以做更多的事情,比如暴露其他 functions/objects/...

然后,您可以将这个普通的 js/ts 应用程序捆绑到一个 .js 文件中。这对于 js/ts 开发人员来说仍然是很正常的,在这里应该没有什么特别需要处理的,而且你在这个阶段仍然不需要接触 Flutter。

接下来,在加载 Flutter Web 应用程序时加载这个单文件 .js 文件。您可以简单地通过编辑 Flutter Web 的 html 文件并添加 <script src="my_single_filed_js_mentioned_above.js" /> 来完成此操作。请注意,在加载此脚本时,它只是设置 window.myFancyFunction 并且没有做任何其他事情。这里还是很琐碎,应该没问题。

最后,在您的 Flutter Web 代码(即 Dart 代码)中,调用 window.myFancyFunction 函数。例如,Flutter Web : How to run javascript using dart js 表示您可以 import 'dart:js' as js; js.context.callMethod('myFancyFunction', ['some arguments']);