super를 호출해야 합니다

super를 호출해야 합니다

This method overrides a method annotated as '@mustCallSuper' in '{0}', but doesn't invoke the overridden method.

이 진단은 @mustCallSuper로 표시된 메서드를 오버라이드하면서, 원래 메서드를 호출하지 않을 때 나타나요. 이런 메서드는 반드시 super 호출로 원래 동작을 이어가야 해요.

출처: must_call_super

본문

이 애널라이저 진단은 @mustCallSuper로 표시된 메서드를 오버라이드하는 메서드가, 필요한 대로 오버라이드된 메서드를 호출하지 않을 때 발생해요.

예시

다음 코드는 B의 메서드 mA의 오버라이드된 메서드 m을 호출하지 않기 때문에 이 진단이 나와요.

import 'package:meta/meta.dart';

class A {
  @mustCallSuper
  void m() {}
}

class B extends A {
  @override
  void m() {}
}

일반적인 해결 방법

오버라이드하는 메서드 안에서 오버라이드된 메서드를 호출해 주면 돼요.

import 'package:meta/meta.dart';

class A {
  @mustCallSuper
  void m() {}
}

class B extends A {
  @override
  void m() {
    super.m();
  }
}

더 알아보기