'dart:core'에서 클래스를 내보내지 않았던 이전 버전을 지원해야 해요

'dart:core'에서 클래스를 내보내지 않았던 이전 버전을 지원해야 해요

sdk_version_async_exported_from_core 진단은 dart:async를 import 하지 않은 라이브러리에서 FutureStream을 쓰는데, 이 클래스들을 dart:core에 정의하지 않았던 이전 SDK 버전도 지원해야 할 때 알려주는 경고예요. SDK 제약을 높이거나 dart:async를 import 하면 돼요.

출처: The class '{0}' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions.

본문

Dart 분석기는 하한(lower bound)이 2.1.0보다 낮은 SDK 제약을 가진 코드에서, dart:async를 import 하지 않은 라이브러리가 FutureStream 클래스를 참조할 때 이 진단을 만들어요. 이전 버전에서는 이 클래스들이 dart:core에 정의돼 있지 않았기 때문에 import가 꼭 필요했어요.

예시

먼저, 하한이 2.1.0보다 낮은 SDK 제약을 정의한 pubspec 예시를 볼게요.

environment:
  sdk: '>=2.0.0 <2.4.0'

그 pubspec을 가진 패키지 안에서 아래 같은 코드가 있으면 이 진단이 발생해요.

void f(Future f) {}

흔한 해결 방법

이전 SDK 버전을 지원할 필요가 없다면, 클래스를 참조할 수 있도록 SDK 제약을 올리면 돼요.

environment:
  sdk: '>=2.1.0 <2.4.0'

이전 SDK 버전을 지원해야 한다면, dart:async 라이브러리를 import 하면 돼요.

import 'dart:async';

void f(Future f) {}

더 알아보기