如何在飞镖中创建动态变量
How to create a dynamic variable in dart
我正在将 java 脚本移动到 dart,在 java 脚本中我创建了动态变量,如
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
我如何用飞镖做到这一点?
在 Dart Window
中(window
的类型)是一个 class。您不能向 Dart class 动态添加属性。
window["text" + pageNumber] = 123;
可以与 Map
一起使用。 JS 中的对象表示与地图非常相似,因此可以在那里使用。
如果另一个 class 实现了 []
运算符,您也可以在那个 class 的实例上调用它,但它仍然不会添加属性。它的实际作用仅取决于 []
运算符的实现。
Dart 中可能有不同的方法来实现您想要的,但您没有添加有关您尝试解决的实际问题的详细信息。
你可以在 Dart 中使用普通的全局变量,就像在
.
对于您的用例,您可以通过这种方式创建全局 Map 变量
final Map<String,int> myGlobals = <String,int>{};
创建一个存储整数值和字符串名称的映射。
使用 myGlobals['someName'] = 123;
设置值并使用 print(myGlobals['someName']);
读取它们。
如果您需要设置一个也可用于您可能使用的 JS 库的全局值,您可以使用 dart-js-interop
import 'dart:js';
import 'dart:html';
main() {
int pagenumber = 5;
context['Window']['text$pagenumber'] = 123;
window.alert('${context['Window']['text$pagenumber']}');
}
在 DartPad 上试用。
提示:
当 pageNumber
不是字符串时,"text" + pageNumber
不起作用。
在 Dart 中你不能添加字符串和数字。
"text" + pageNumber.toString()
会起作用,但 'text$pagenumber'
是一种更大胆的方法。在字符串插值中 toString()
会自动为您调用。
另见 Dart js-interop not working if .dart file isn't included。
我正在将 java 脚本移动到 dart,在 java 脚本中我创建了动态变量,如
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
我如何用飞镖做到这一点?
在 Dart Window
中(window
的类型)是一个 class。您不能向 Dart class 动态添加属性。
window["text" + pageNumber] = 123;
可以与 Map
一起使用。 JS 中的对象表示与地图非常相似,因此可以在那里使用。
如果另一个 class 实现了 []
运算符,您也可以在那个 class 的实例上调用它,但它仍然不会添加属性。它的实际作用仅取决于 []
运算符的实现。
Dart 中可能有不同的方法来实现您想要的,但您没有添加有关您尝试解决的实际问题的详细信息。
你可以在 Dart 中使用普通的全局变量,就像在
对于您的用例,您可以通过这种方式创建全局 Map 变量
final Map<String,int> myGlobals = <String,int>{};
创建一个存储整数值和字符串名称的映射。
使用 myGlobals['someName'] = 123;
设置值并使用 print(myGlobals['someName']);
读取它们。
如果您需要设置一个也可用于您可能使用的 JS 库的全局值,您可以使用 dart-js-interop
import 'dart:js';
import 'dart:html';
main() {
int pagenumber = 5;
context['Window']['text$pagenumber'] = 123;
window.alert('${context['Window']['text$pagenumber']}');
}
在 DartPad 上试用。
提示:
当pageNumber
不是字符串时,"text" + pageNumber
不起作用。
在 Dart 中你不能添加字符串和数字。
"text" + pageNumber.toString()
会起作用,但 'text$pagenumber'
是一种更大胆的方法。在字符串插值中 toString()
会自动为您调用。
另见 Dart js-interop not working if .dart file isn't included。