【问题标题】:How to create a dynamic variable in dart如何在 dart 中创建动态变量
【发布时间】:2016-04-19 14:21:05
【问题描述】:

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

window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);

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

【问题讨论】:

    标签: dart


    【解决方案1】:

    在 Dart 中Windowwindow 的类型)是一个类。您不能动态地将属性添加到 Dart 类。 window["text" + pageNumber] = 123; 将与 Map 一起使用。 JS 中的对象表示与地图非常相似,因此这适用于那里。 如果另一个类实现了[] 运算符,您也可以在该类的实例上调用它,但它仍然不会添加属性。它的实际作用仅取决于 [] 运算符的实现。

    在 Dart 中可能有不同的方法来实现你想要的,但你没有添加关于你试图解决的实际问题的细节。

    你可以在 Dart 中使用普通的全局变量,就像在 Global Variables in Dart.

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

    final Map<String,int> myGlobals = <String,int>{};
    

    创建一个使用字符串名称存储整数值的映射。

    使用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']}');
    }
    

    试试DartPad

    提示:

    "text" + pageNumberpageNumber 不是字符串时不起作用。 在 Dart 中,您不能添加字符串和数字。
    "text" + pageNumber.toString() 可以,但 'text$pagenumber' 是一种更大胆的方法。在字符串插值中,toString() 会自动为您调用。

    另见Dart js-interop not working if .dart file isn't included

    【讨论】:

    • 谢谢..我如何使用变量 text5 以供我进一步使用,因为我将生成一个动态元素,我需要创建动态变量以进一步使用来引用该元素?这样我就可以使用 context['Window']['text$pagenumber'] = some input values...真的很难用!!!
    • 对我的链接进行采样以动态创建表,我需要保存每个元素变量名以进一步需要dartpad.dartlang.org/4d84583325590c467b19,在该链接中如何为 table_row_ele 变量创建动态值。
    • 在 Dart 中使用 window 是严重的误用。这正是使用 Dart 让您摆脱的黑客攻击之一。只需创建一个全局 Map 变量并为其命名,以揭示其用途并将您的值存储在那里。我更新了我的答案。我不知道table_row_ele 变量是什么意思。
    • 我要使用地图。
    猜你喜欢
    • 2013-07-03
    • 2017-07-30
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2012-01-08
    • 2018-05-01
    相关资源
    最近更新 更多