我需要在Ffltter项目中运行Java脚本代码. 我用flutter_js来做这个.

我可以将int(或String)值作为参数传递给Java脚本,例如:

String blocJs = await rootBundle.loadString("assets/js/bloc.js");
final jsResult = jsRuntime.evaluate(blocJs + """add($firstNumber, $secondNumber)""");

但是我需要将object作为参数传递给JavaScript代码. 这可能吗?

推荐答案

您可以在DART中定义对象,并将其作为字符串传递给JavaScript函数.然后,您可以在JavaScript中解析该字符串并使用该对象.

下面是一个例子:

import 'dart:convert';

class Person {
  final String name;
  final int age;

  Person(this.name, this.age);

  Map<String, dynamic> toMap() {
    return {
      'name': name,
      'age': age,
    };
  }

  String toJson() => json.encode(toMap());
}

final person = Person('John', 30);
final jsObject = 'JSON.parse(\'${person.toJson()}\')';

final jsResult = jsRuntime.evaluate(blocJs + """add($firstNumber, $secondNumber, $jsObject)""");

在本例中,我们定义了一个具有nameage字段的Person类.然后,我们创建此类的一个实例,并使用json.encode方法将其转换为JSON字符串.然后,我们将该JSON字符串作为参数传递给JavaScript函数.

在JavaScript函数中,您可以使用JSON.parse方法解析JSON字符串并使用结果对象.

Javascript相关问答推荐

如何在NightWatch.js测试中允许浏览器权限?

为什么getRecord()会因为与_logger相关的错误而失败?(使用Hedera SDK)

如何在JavaScript中在文本内容中添加新行

如何修复循环HTML元素附加函数中的问题?

React Code不在装载上渲染数据,但在渲染上工作

实现JS代码更改CSS元素

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

我怎么在JS里连续加2个骰子的和呢?

更改预请求脚本中重用的JSON主体变量- Postman

当输入字段无效时,我的应用程序不会返回错误

第三方包不需要NODE_MODULES文件夹就可以工作吗?

当从其他文件创建类实例时,为什么工作线程不工作?

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

TypeORM QueryBuilder限制联接到一条记录

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧

重新渲染过多(&Q).REACT限制渲染次数以防止无限循环.使用REACT下拉菜单时

扩散运算符未按预期工作,引发语法错误

每隔一行文本段落进行镜像(Boustrophedon)

如何格式化API的响应

对象作为react 子对象无效(已找到:具有键的对象{type,props}).如果要呈现一个子级集合,请改用数组