doNotStore 값의 할당
doNotStore 값의 할당 (assignment_of_do_not_store)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 assignment_of_do_not_store 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. doNotStore 어노테이션이 붙은 함수(메서드·getter 포함)가 돌려주는 값을 필드나 최상위 변수에 저장하려고 할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable.
'{0}'은(는) 'doNotStore'로 표시되어 있어서 필드나 최상위 변수에 할당하면 안 돼요.
설명
분석기는 doNotStore 어노테이션으로 명시적 또는 암묵적으로 표시된 함수(메서드와 getter 포함)의 값을 필드나 최상위 변수에 저장할 때 이 진단을 만들어 내요. doNotStore가 붙은 값은 오래 보관하면 안 되는 일시적인 값이기 때문이에요.
예시
다음 코드는 함수 f의 값을 최상위 변수 x에 저장하고 있기 때문에 이 진단을 만들어 내요.
import 'package:meta/meta.dart';
@doNotStore
int f() => 1;
var x = f();
일반적인 해결 방법
필드나 변수를 참조하는 부분을, 그 값을 만들어 내는 함수를 호출하는 방식으로 바꿔 주세요. 즉, 값을 저장해 두지 말고 필요할 때마다 함수를 직접 호출하는 거예요.
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
doNotStore어노테이션에 대한 더 자세한 내용은 meta 패키지 문서를 참고해요.