doNotStore 값의 할당

doNotStore 값의 할당 (assignment_of_do_not_store)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 assignment_of_do_not_store 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. doNotStore 어노테이션이 붙은 함수(메서드·getter 포함)가 돌려주는 값을 필드나 최상위 변수에 저장하려고 할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.

출처: assignment_of_do_not_store

본문

진단 메시지

'{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();

일반적인 해결 방법

필드나 변수를 참조하는 부분을, 그 값을 만들어 내는 함수를 호출하는 방식으로 바꿔 주세요. 즉, 값을 저장해 두지 말고 필요할 때마다 함수를 직접 호출하는 거예요.

더 알아보기