_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?
81
5 asked
강의에서는
final storage = ref.read(secureStorageProvider);이 코드를 checkToken과 deleteToken에서 불러 사용하고 있는데 여러번 부르는 것이 싫다면
class _SplashScreenState extends ConsumerState<SplashScreen> {
late final storage = ref.read(secureStorageProvider);
@override
void initState() {
super.initState();
//토큰 검사
checkToken();
// deleteToken();
}또는
class _SplashScreenState extends ConsumerState<SplashScreen> {
late final FlutterSecureStorage storage;
@override
void initState() {
super.initState();
storage = ref.read(secureStorageProvider);
//토큰 검사
checkToken();
// deleteToken();
}으로 한번만 불러서 storage를 바로 사용해도 될까요? 이렇게 사용해도 버그나 라이프사이클에 문제가 있을지 궁금합니다.
강의 잘 듣고 있습니다!! 감사합니다.
Answer 2
0
가능하다라는 것으로 이해하겠습니다!
다른 지식적인 부분이 있으시다면 달아주시면 감사하겠습니다!!
0
실행은 되겠으나 굳이 그렇게 할 필요가 없습니다.
만약에 secureStorageProvider가 변경될경우 최신 버전을 제공받지 못하는 문제가 생길 수 있습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
Flutter에서 여러 곳에서 동일한 인스턴스를 사용하고자 할 때, late 키워드를 사용해 변수 선언을 지연 초기화하는 방식으로 한 번만 객체를 생성하는 것이 가능합니다. 이를 통해 반복적으로 객체를 생성하는 비용을 절약할 수 있습니다.
late 변수 사용
late final storage = ref.read(secureStorageProvider);를 클래스 레벨에서 선언: 이 방식은 앱 라이프사이클 동안storage인스턴스를 한 번만 초기화하고 유지하도록 합니다. 이렇게 되면initState()가 실행될 때 이미 초기화되어 있을 것입니다.initState()에서storage = ref.read(secureStorageProvider);설정: 이 경우도initState초기화 과정에서storage가 한 번만 설정되기 때문에 해당 클래스 인스턴스의 라이프사이클 동안 동일한 객체를 사용하게 됩니다.
두 방식 모두 문제 없이 동작할 수 있으며, Flutter의 ConsumerState는 initState에서 한 번 초기화하는 방식과 잘 어울립니다. 다만, 변수 선언 위치에 따라 코드의 가독성과 이해도가 달라질 수 있으므로 팀 콘벤션이나 개인 스타일에 맞추어 선택하시면 됩니다.
관련하여 기존 지식공유자님의 답변을 살펴보고 싶으시다면, secureStorage provider 질문드립니다!을 확인해 주세요. 여기서는 FlutterSecureStorage를 관리하는 방식에 대한 이해를 더할 수 있는 논의가 진행되고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Isar 마지막 업데이트는 2년전입니다.
0
25
0
FlutterSecureStorage 질문
0
25
0
Dio onError Interceptor 만드는 부분에 질문이 있습니다.
0
74
2
관리자 기능에 대한 질문
0
96
2
part 'restaurant_model.g.dart';
0
91
1
36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.
0
54
2
2번 반환 상황 관련 질문
0
58
2
riverpod 3.0
0
139
2
Asset folder??
0
79
2
디자이너와 협업 시 프레임 크기 설정 관련 질문
0
111
2
FutureProvider, StateNotifierProvider 선택 기준
0
68
2
컴포넌트 모델화
0
61
2
쿼리 파라미터
0
81
2
화면 안보임
0
64
2
PaginationListView
0
50
1
강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.
0
99
2
프로토타입이미지
0
59
2
여러 객체를 상태 관리하는 방법에 대한 질문
0
82
2
장바구니 결제하기 응답이 500이 옵니다.
0
102
2
removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?
0
64
2
이 두가지는 완전히 동일한 기능인가요?
0
104
3
내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...
0
75
2
코딩 작성 순서 관련 질문
0
83
2
ProductCard factory 관련 문제 질문
0
47
2

