如果为func,则会产生错误-A value of type "Object" can't be returned from the function 'func' because it has a return type of 'B'.为什么会特别出现此错误?难道不应该认为C()D()都适合B,从而使三元表达式的计算结果为B的实例吗?如果不是,为什么三元表达式的计算结果是Object,而不是A的实例?使用常规条件语法(if/else)时不会出现此错误.

class A {}

class B {}

class C extends A implements B {}

class D extends A implements B {}

B func(bool b) => b ? C() : D();

推荐答案

事实证明,这是一个已知的问题--请参阅此处链接的问题:https://github.com/dart-lang/language/issues/2577

Dart相关问答推荐

Dart中的运算符(){…}做什么?

如何在flutter中管理switch小部件的原生外观

NetworkImage 正在缓存旧图像

无法在 IOS 上使用 firebase 运行Flutter应用程序

从 PopupMenuItem 中删除填充(overflow menu)

Flutter 中带有导航栏的永久视图

AngularDart 可以直接路由到组件吗?

在 Dart 中处理字节数组时,使用 Uint8List 优于 List 有什么优势?

如何在flutter中使用rootBundle加载图片?

ProcessException:进程C:\..\myapp\android\gradlew.bat异常退出:

如何根据 Select 的选项卡更改样式?

如何在Flatter中zoom 两个谷歌 map 标记

如何在 Flutter 中渲染单个像素?

判断 Future 是否完整

将ListTile图标向左对齐

Flutter列表视图底部溢出

一个集合如何确定两个对象在dart中相等?

dart 中隐式转换运算符的语法是什么?

从 Dart 应用访问 pubspec.yaml 属性

有没有办法在 Dart 中通过引用传递原始参数?