Dart 2中new和const可选特性无法使用?代码报错求助
嘿,我来帮你捋清楚这个问题!
首先看你遇到的报错:
NoSuchMethodError: Attempted to use type 'MyClass' as a function. Since types do not define a method 'call', this is not possible. Did you intend to call the MyClass constructor and forget the 'new' operator?
原因其实很明确:你使用的Flutter 0.3.2配套的Dart SDK是2.0.0-dev.48.0.flutter-fe606f890b,这是Dart 2的早期开发版本,当时可选new/const的特性还没有被默认启用。所以你直接写MyClass myObj = MyClass();的时候,Dart会把MyClass当成一个类型来尝试调用(就像调用函数一样),而不是识别为调用构造函数,这就触发了报错。
解决办法
临时快速修复:显式加上
new关键字调用构造函数,代码改成这样:main() { MyClass myObj = new MyClass(); } class MyClass{ }这样就能正常运行了。
长期解决方案:升级你的Flutter版本到更高的稳定版本(比如1.x及以后的版本),这些版本配套的Dart SDK已经默认支持可选
new/const特性,到时候你就可以直接省略new来创建对象,完全符合你想要的写法。
简单总结一下:Dart 2的可选new特性不是从Dart 2的第一个开发版就默认开启的,你当前用的版本还没到那个阶段,所以必须显式写new才行。
内容的提问来源于stack exchange,提问作者Raouf Rahiche

