如何在dart中创建动态变量

nis*_*sar 4 dart

我正在将java脚本移动到dart,在java脚本中我创建了动态变量

window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
Run Code Online (Sandbox Code Playgroud)

我怎么能用飞镖做到这一点?

Gün*_*uer 6

在Dart Window(类型window)是一个类.您无法动态地向Dart类添加属性. window["text" + pageNumber] = 123;会使用Map.JS中的对象表示与地图非常相似,因此可以在那里工作.如果另一个类实现了[]运算符,您也可以在该类的实例上调用它,但它仍然不会添加属性.它实际上只是取决于[]运营商的实施.

Dart可能有不同的方法来实现您想要的效果,但您没有添加有关您尝试解决的实际问题的详细信息.

您可以在Dart中使用常规全局变量,如Dart中的 全局变量中所述.

对于您的用例,您可以通过这种方式创建全局Map变量

final Map<String,int> myGlobals = <String,int>{};
Run Code Online (Sandbox Code Playgroud)

创建一个存储带字符串名称的整数值的映射.

设置值myGlobals['someName'] = 123;并使用它们读取它们print(myGlobals['someName']);.

如果需要设置一个也可用于JS库的全局值,可以使用

import 'dart:js';
import 'dart:html';

main() {
    int pagenumber = 5;
    context['Window']['text$pagenumber'] = 123;
    window.alert('${context['Window']['text$pagenumber']}');
}
Run Code Online (Sandbox Code Playgroud)

DartPad上试试吧.

暗示:

"text" + pageNumber不是pageNumber字符串时不起作用.在Dart中,您无法添加字符串和数字.
"text" + pageNumber.toString()会工作,但这'text$pagenumber'是一个更愚蠢的方式来做到这一点.在字符串插值中toString()会自动为您调用.

如果未包含.dart文件,请参阅Dart js-interop不工作.

  • 在Dart中使用`window`是一个严重的滥用。这正是使用Dart的黑客之一。只需创建一个全局`Map`变量,并为其命名即可显示其用途并将其值存储在那里。我更新了答案。我不知道您所说的`table_row_ele`变量是什么意思。 (2认同)
  • 我要使用地图。 (2认同)