我已经看到使用 dart js 包从 dart web 调用 js 绝对是可能的,但是还没有找到从 dart 本机执行此操作的方法。对于更多上下文 - 我有一个用 javascript 编写的 npm 包,我想从 flutter 移动应用程序调用它。直接调用 javascript 或以某种方式将其包装在 dart 或其他方式中对我来说都很好,但是在 dart 中重写它是不可能的,因为所述 npm 包依赖于一个非常特定的加密 javascript 包,而在 dart 中不存在等效项,并且重新创建表示密码学包将承担巨大的工作量和重大的安全风险。先感谢您!
在您的应用程序中嵌入 WebView 并使用它来运行 JavaScript:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
main() {
runApp(_Test());
}
class _Test extends StatelessWidget {
final completer = Completer<WebViewController>();
@override
Widget build(BuildContext context) {
var js = '1+1';
return MaterialApp(
home: Scaffold(
body: Stack(
children: [
WebView(
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
if (!completer.isCompleted) completer.complete(controller);
},
),
Center(
child: FutureBuilder(
future: completer.future.then((controller) {
return controller.runJavascriptReturningResult(js);
}),
builder: (context, snapshot) {
if (snapshot.hasError) throw snapshot.error!;
if (!snapshot.hasData) return Container();
return Text('$js=${snapshot.data}', style: Theme.of(context).textTheme.headline2);
},
),
),
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |