개발자 랩실/플러터 (Flutter)

[Flutter] The return type ‘num’ isn’t a ‘T’, as required by the closure’s context.

sina.dev 2022. 2. 23. 13:09
728x90

 

에러

 

 

해당 코드

/// 공통 피커의 아이템 값 목록 생성
List<T> generatePickerValues<T extends num>(
    {required T start, required T end, num interval = 1, int decimalPoint = 2}) {
  assert(start != end);
  assert(interval > 0);
  correctionValue(num value) =>
      floatingPointErrorCorrectionValue(value, decimalPoint: decimalPoint);
  final range = correctionValue(end - start);
  final step = range.abs() ~/ interval;
  return List.generate(step + 1, (i) => correctionValue(start + (i * interval * range.sign)));
}

/// 부동소수점 오류 보정 함수
num floatingPointErrorCorrectionValue<T extends num>(T value, {int decimalPoint = 2}) {
  if (T == int) return value;
  return num.parse(value.toStringAsFixed(decimalPoint));
}

 

에러 이유

  • 발생한 에러를 번역하면 클로저의 컨텍스트에서 요구하는 반환 유형 'num'은 'T'가 아닙니다. 란 번역이 나온다.
  • return을 하는 메소드의 타입과 값을 넘겨주는 메소드의 넘겨주는 타입의 불일치로 일어나는 에러다.

 

에러 해결 방안

  • List generatePickerValues 의 List를 return 타입의 값과 통일 시켰다.
  • List를 List으로 변경함