'dart:core'에서 클래스를 내보내지 않았던 이전 버전을 지원해야 해요
'dart:core'에서 클래스를 내보내지 않았던 이전 버전을 지원해야 해요
sdk_version_async_exported_from_core 진단은 dart:async를 import 하지 않은 라이브러리에서 Future나 Stream을 쓰는데, 이 클래스들을 dart:core에 정의하지 않았던 이전 SDK 버전도 지원해야 할 때 알려주는 경고예요. SDK 제약을 높이거나 dart:async를 import 하면 돼요.
본문
Dart 분석기는 하한(lower bound)이 2.1.0보다 낮은 SDK 제약을 가진 코드에서, dart:async를 import 하지 않은 라이브러리가 Future나 Stream 클래스를 참조할 때 이 진단을 만들어요. 이전 버전에서는 이 클래스들이 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) {}
더 알아보기
- Dart 분석기 진단 전체 목록 살펴보기: Dart diagnostics
dart:async라이브러리와 Future·Stream 자세히 보기: dart:async 문서