【问题标题】:dart analyzer error: argument_type_not_assignabledart 分析器错误:argument_type_not_assignable
【发布时间】:2022-12-03 23:38:33
【问题描述】:

TrackPoint tp 类型:TrackPoint

参数类型 'TrackPoint (其中 TrackPoint 在 ...lib\trackpoint.dart 中定义)' 不能分配给 参数类型 'TrackPoint(其中 TrackPoint 在 ...lib\trackPoint.dart 中定义)'.dart(argument_type_not_assignable)trackpoint.dart(8, 7): TrackPoint 定义在 ...lib\trackpoint.dart trackPoint.dart(8, 7):TrackPoint 定义在 ...lib\trackPoint.dart

这是错误所在:

import 'trackpoint.dart' show TrackPoint;

class TrackingStatus {

    // ...

    static void _triggerEvent(TrackPoint tp) {
        // ...
        TrackingStatusChangedEvent.trigger(tp); // <-- error on tp, see above
    }

这是导致错误的原因:

class TrackingStatusChangedEvent {


static void trigger(TrackPoint tp) { // <-- causes error
  // ...
}

static void trigger(tp) { // <-- works but tp should not be dynamic
  // ...
}

这是 TrackPoint 的来源:


class TrackPoint {
  static final List<TrackPoint> _trackPoints = [];



void _addTrackPoint() {
    _trackPoints.add(this);

argument_type_not_assignable 对我来说不合理。特别是因为错误消息指向同一个文件中的同一个类,就好像它们是不同的东西一样

【问题讨论】:

  • 这是我在运行时得到的错误,离开 tp dynamic:type 'TrackPoint' is not a subtype of type 'TrackPoint' where TrackPoint is from package:chaostours/trackPoint.dart TrackPoint is from package:chaostours/trackpoint.dart

标签: dart analyzer


【解决方案1】:

我建议只使用前缀用于库导入。见下文。

import 'trackpoint.dart' as tp;

然后像这样使用它。

class TrackPoint {
  static final List<tp.TrackPoint> _trackPoints = [];



void _addTrackPoint() {
    _trackPoints.add(this);

【讨论】:

  • 看起来问题来自 trackPoint.dart 导入 trackingStatus.dart - 反之亦然。因为将两个类放在同一个文件中解决了这个问题。
【解决方案2】:

将类 TrackPoint 和类 TrackingStatus 放在同一个文件中解决了这个问题。可能是交叉加载问题。

还是要谢谢你的帮助!

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2021-09-16
    • 2021-09-25
    相关资源
    最近更新 更多