dart - Dart + Polymer中的算术运算会引发无效的参数异常

标签 dart dart-polymer

我在Dart 1.16.0 + Polymer中遇到了一个奇怪的问题。要执行计算,需要将double类型的输入参数转换为字符串,然后再次转换为double以进行计算,否则将抛出无效的参数异常。谁能指出我可能在哪里出问题了?

HTML代码 stats.html

        <div class="container flex-horizontal">
            <div class="flexchild-horizontal">
                <div class="container flex-horizontal">
                    <div class="flexchild-horizontal">Base</div>
                    <div><input type="text" name="base" value="{{base::input}}" size="5" maxlength="5"></div>
                </div>
            </div>
            <div class="flexchild-horizontal">
                <div class="container flex-horizontal">
                    <div class="flexchild-horizontal">Calculated Value</div>
                    <div><input type="text" name="calc_value" value="{{calculateValue(base)}}" size="5" maxlength="5"></div>
                </div>
            </div>

Dart代码 stats.dart
@HtmlImport('stats.html')
library workbench.lib.client.stats;

import 'package:web_components/web_components.dart' show HtmlImport;
import 'package:polymer/polymer.dart';
import 'package:polymer_elements/paper_material.dart';
import 'package:polymer_elements/paper_styles.dart';
import 'package:polymer_elements/iron_flex_layout.dart';

@PolymerRegister('stats')
class Stats extends PolymerElement {

  @property(notify: true)
  double base = 10.0;

  //@Property(computed: 'calculateValue(base)')
  //double value;

  Stats.created() : super.created();

  @reflectable
  double calculateValue(double b) {
    print("Base is ");
    print(b);

    // Not working. Throw an invalid Argument: 5.0 Exception
    // var c = b + 5.0;

    // Working
    var c = double.parse(b.toString()) + 5.0;
    print("c is ");
    print(c);

    return c;
  }

  ready() {

  }
}

最佳答案

我猜您需要使用num而不是double
据我所知,至少在Dartium中,5.0将以int而不是double的形式返回。这是因为在JS中intdouble之间没有区别。

正确区分intdouble仅在服务器(独立VM)上有效。只要未从JS传递值,它也可以在Dartium中使用。

关于dart - Dart + Polymer中的算术运算会引发无效的参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435335/

相关文章:

flutter - flutter/火焰中未定义的类 'TapDownInfo'

dart - 如何在 Polymer.dart 中访问 light DOM?

Dart:将 observable 与多个 getter/setter 一起使用

dart - future 的功能不断重复

dart - 以编程方式关注 InputField 并打开键盘

javascript - 将 JavaScript Polymer 元素导入到 Dart

dart - 在Polymer Dart模板化器实例中编辑输入字段会引发错误

dart - 缺少方法 "null"。 smoke 包的代码生成似乎不完整

class - 此类被标记为 '@immutable',但是其一个或多个实例字段不是最终的:

dart - 如何通过多个 View 使用数据绑定(bind)