묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
CachedNetworkImage 로 인한 memory leak 문제..
안녕하세요 코드팩토리님!선생님의 dart강의를 듣고flutter로 혼자 사이드 프로젝트를 진행하고 있는 중에 질문이 있어 이렇게 글을 남깁니다.다만 무료 dart 강의만 듣고 flutter 질문을 드리는 것이 죄송하네요..ㅜㅜ 우여곡절끝에 제가 생각하던 앱을 비슷하게나마 완성을 했는데요.아기 사진을 가족들과 공유할수 있는 사진앨범 앱을 만들었습니다. 기본적으로 firebase를 연동하여 데이터를 받아와서, gridview 이미지들을 보여주고있습니다.스크롤 시, 추가적으로 데이터들을 받아와서 이미지들을 보여주게 되는데요여기서 이미지들이 다 불러와지지 않은 상태에서빠르게 스크롤을 하면 앱이 꺼져버리는 문제가 생겼습니다. 구글링 및 디버깅을 해보니 memory leak으로 앱이 꺼지는 것 같은데Image.network를 CachedNetworkImage로 바꿔도 보고setState를 남발해서 그런가 싶어서 코드팩토리님 유튜브의 'provider로 sns 스타일 infinite scroll 구현하기!' 를 참고하여provider로 상태관리를 하도록 바꿔도 보고const를 선언할수 있는 부분은 선언하고최대한 build를 호출 안하게끔, build에 복잡한 로직이 안들어가게끔 수정하였는데요.그럼에도 불구하고 이 문제는 고쳐지지가 않더라구요 ㅜㅜ 불러오는 이미지 url을 CachedNetworkImage로 보여주지 않고그냥 Text로 보여주면 해당 문제가 안나오는걸로 봐선뭔가 이미지 관련해서 문제가 있는것 같긴한데어떻게 해결해야하는지 감이 잡히지도 않고, 답답한 심정입니다 ㅜㅜ괜찮으시다면 방법을 제시해주실수 있을까 싶어 질문남깁니다.감사합니다!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Rating을 GET 요청할때 DioError가 발생합니다.
Dio로 Rating을 get요청하면 이런 에러가 뜨면서 데이터를 가죠오지 못합니다.. 하지만 Postman으로 get요청을 하면 잘 가져오는데 뭐가 문제인걸까요...
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Token 관련 질문 드립니다.
안녕하세요. 학습중 궁급해서 질문 드립니다. test@codefactory.ia:testtest 이 부분을 인코딩하고 포스트맨에서 로직 검사를 여러번 시험해보면서 username 즉 ID값을 다르게 변경해도 패스워드만 정확하게 맞다면 accessToken 과 refreshToken을 받을 수 있었습니다.Password부분 같이 값이 같아야 토큰을 받을 수 있는건데 ID값은 달라도 왜 토큰 값이 받아지는 거죠? 사진은 ID값을 다르게 해서 토큰을 받은 겁니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
수업의 내용은 아니지만 궁금해서 여쭤봅니다.
저는 이런식으로 계속해서 뜨는데 이것만 끄는 방법이 있을까요?필요한 정보만 보고 싶은데 textfield의 깜빡깜빡하는 부분까지도 다 뜨는 것 같아서요. ㅠㅠ 수업내용은 선생님께서 잘 알려주셔서 너무 좋아요!! 그리고 현재 안드로이드로 배우고 있는데, 선생님처럼 Appbar의 title이 이처럼 다음 페이지로 이동시 살짝 오른쪽으로 가는데 어떻게 설정하면 될까요??
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Error: Not found: 'dart:ffi' 에러
안녕하세요 에러문제로 골머리를 앓다가 질문합니다색상정보 DB에 넣기를 따라하면서 db를 만들고 색상 쿼리를 넣고 문제없이 따라 코딩했지만 처음보는 에러를 보고 혼자 해볼려고 노력했지만 안되네요 ㅠㅠimport 'dart:ffi' 여기에서 Error: Not found: 'dart:ffi' 이 종류의 에러가 나와서 크롬으로 앱이 실행이 안되네요 ㅠㅠ어떤 문제일까요? 사진첨부합니다
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
refresh 토큰 재발급 요청에 대해서
리프래시 토큰이 기간 만료되었다는 거는 어플 쪽에서 확인을 해서 재발급 요청을 보내야 하나요?예를 들어서 페이로드에 있는 만료일을 어플 백그라운드에서 계속 체크하면서 만료되면 재발급 요청을 서버쪽에 보내는 건지 궁금 합니다.액세스토큰이 만료일 때 리프레시 토큰까지 만료이면 바로 로그아웃인데 리프래시 토큰만 만료인 경우는 어떻게 검증하는지 궁금합니다
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
오류 해결 도움이 필요합니다 ㅠㅠ
간단하게 만들고있는데 ListView 를 사용했더니 아래와 같은 오류가 뜹니다. 뭐가 문제일까요?!RenderFlex children have non-zero flex but incoming height constraints are unbounded.Flexible , Expanded 사용해봤습니다 ㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
compileSdkVersion 32 관련 문의
안녕하세요.!스케쥴 어플 안드로이드 에뮬레이터에서 다음과 같은 이슈가 발생하는데 혹시 이건 어디서 세팅해야 할까요?안드로이드 스튜디오 플러그인에서 찾아봤지만 확인이 안됩니다!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
_App 클래스가 ConsumerWidget을 상속 받으면 에러가 생깁니다
안녕하세요, 시간이 없어 어떻게든 꾸역꾸역 듣고 있는데도 많은 도움을 얻고 있습니다._App 클래스에서 MaterialApp 위젯을 .router 생성자로 부르고 _App 클래스가 ConsumerWidget를 상속 받게끔 코드를 고치니 에러가 발생합니다.가장 위에 보이는 에러는 이렇습니다.다시 ConsumerWidget에서 StatelessWidget을 상속 받게 하니 에러는 발생하지 않습니다. .router 생성자를 빼도 에러가 발생하는 것을 보아 리버팟과 관련된 이슈인 듯 합니다.저는 강의가 나온 후 조금 지난 시점에 듣기 시작해서 이미 리버팟이 2.1.대 버전일 때 시작했는데 강의와 시차가 있어 발생하는 문제일까요?강사님 아니더라도 해결하신 분이 있다면 조언 부탁드립니다.감사합니다.에러 메시지 및 스택은 다음과 같습니다.[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2609 pos 20: '_debugCurrentBuildTarget == context': is not true.#0 AssertionError.doThrowNew (dart:core-patch/errors_patch.dart:51:61)#1 AssertionError.throwNew (dart:core-patch/errors_patch.dart:40:5)#2 BuildOwner.buildScope.<anonymous closure> (package:flutter/src/widgets/framework.dart:2609:20)#3 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2613:12)#4 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13)#5 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7)#6 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7)#7 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)#8 Timer.runTimers (dart:isolate-patch/timer_impl.dart:398:19)#9 _Ti<…>======== Exception caught by widgets library =======================================================The following assertion was thrown building UncontrolledProviderScope:Got a stack frame from package:stack_trace, where a vm or web frame was expected. This can happen if FlutterError.demangleStackTrace was not set in an environment that propagates non-standard stack traces to the framework, such as during tests.'package:flutter/src/foundation/stack_frame.dart':Failed assertion: line 192 pos 7: 'line != '===== asynchronous gap ===========================''The relevant error-causing widget was: UncontrolledProviderScope UncontrolledProviderScope:file:///Users/letmebelazy/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.1.1/lib/src/framework.dart:250:12When the exception was thrown, this was the stack: #2 StackFrame.fromStackTraceLine (package:flutter/src/foundation/stack_frame.dart:192:7)#3 MappedIterator.moveNext (dart:_internal/iterable.dart:391:20)#4 WhereTypeIterator.moveNext (dart:_internal/iterable.dart:869:20)#5 new GrowableList.ofOther (dart:core-patch/growable_array.dart:202:26)#6 new GrowableList.of (dart:core-patch/growablearray.dart:152:26)#7 new List.of (dart:core-patch/array_patch.dart:51:28)#8 Iterable.toList (dart:core/iterable.dart:470:12)#9 StackFrame.fromStackString (package:flutter/src/foundation/stack_frame.dart:93:10)#10 StackFrame.fromStackTrace (package:flutter/src/foundation/stack_frame.dart:78:12)#11 FlutterErrorDetails.debugFillProperties (package:flutter/src/foundation/assertions.dart:712:57)#12 DiagnosticableNode.builder.<anonymous closure> (package:flutter/src/foundation/diagnostics.dart:2940:17)#13 DiagnosticableNode.builder (package:flutter/src/foundation/diagnostics.dart:2943:8)#14 _FlutterErrorDetailsNode.builder (package:flutter/src/foundation/assertions.dart:1289:56)#15 DiagnosticableNode.emptyBodyDescription (package:flutter/src/foundation/diagnostics.dart:2954:77)#16 DiagnosticsNode.toJsonMap.<anonymous closure> (package:flutter/src/foundation/diagnostics.dart:1632:13)#17 DiagnosticsNode.toJsonMap (package:flutter/src/foundation/diagnostics.dart:1661:6)#18 WidgetInspectorService._nodeToJson (package:flutter/src/widgets/widget_inspector.dart:1606:18)#19 WidgetInspectorService._reportStructuredError (package:flutter/src/widgets/widget_inspector.dart:937:44)#20 FlutterError.reportError (package:flutter/src/foundation/assertions.dart:1184:14)#21 _debugReportException (package:flutter/src/widgets/framework.dart:6493:16)#22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4887:9)#23 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)#24 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)#25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5)#26 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11)#27 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)... Normal element mounting (7 frames)#34 UncontrolledProviderScopeElement.mount (package:flutterriverpod/src/framework.dart:309:11)... Normal element mounting (9 frames)#43 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)#44 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)#45 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16)#46 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5)#47 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18)#48 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19)#49 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13)#50 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7)#51 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7)(elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch)============================================================================================================ Exception caught by widgets library =======================================================The following assertion was thrown building ProviderScope(state: ProviderScopeState#5859c):'package:flutter/src/widgets/framework.dart': Failed assertion: line 4606 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true.Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.mdThe relevant error-causing widget was: ProviderScope ProviderScope:file:///Users/letmebelazy/StudioProjects/code_factory/lib/main.dart:9:5When the exception was thrown, this was the stack: #2 Element.rebuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4606:14)#3 Element.rebuild (package:flutter/src/widgets/framework.dart:4609:6)#4 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5)#5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)#6 UncontrolledProviderScopeElement.mount (package:flutterriverpod/src/framework.dart:309:11)... Normal element mounting (9 frames)#15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)#16 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)#17 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16)#18 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5)#19 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18)#20 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19)#21 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13)#22 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7)#23 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7)(elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch)============================================================================================================ Exception caught by widgets library =======================================================The following assertion was thrown attaching to the render tree:'package:flutter/src/widgets/framework.dart': Failed assertion: line 4606 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true.Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.mdWhen the exception was thrown, this was the stack: #2 Element.rebuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4606:14)#3 Element.rebuild (package:flutter/src/widgets/framework.dart:4609:6)#4 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5)#5 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11)#6 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)#7 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)#8 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)#9 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16)#10 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5)#11 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18)#12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19)#13 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13)#14 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7)#15 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7)(elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch)====================================================================================================
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
asset 추가 후 get dependencies?
pub get 한 이후에 main.dart 로 돌아오니코드작성하는 곳 상단에pubspec has been edited라고 뜨고Get dependencies Upgrade dependencies ignore이라고 뜨는데 무시하면 되는건가요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
이번 플러터와 다트 업데이트에서
이번 다트 업데이트에서플러터와 다트가 업데이트가 되면서여러 기능이 생긴 걸로 아는데다트에서 Pattern Matching 이란 기능이 도입 된 것으로 압니다.반환 값이 여러 타입일 수 있다는 걸로 해석을 했는데정확히 무슨 기능이며 어디에 활용할 수 있을까요?Json 직렬화 혹은 역직렬화에 많이 활용될까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
flutter doctor 실행시 다름 ㅠㅠㅠ
flutter doctor 실행시 이렇게 뜨는데...어떤게 문제일까요 ㅠㅠㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 설치 시 Windows Version 오류가 발생됩니다.
Windows 11에서 플러터 설치중인데flutter doctor시에 설치된 Windows 버전이 10 이상인지 확인할 수 없다고 나옵니다..Unable to find bundled Java version 오류는 질문통해 해결완료했는데 해당 오류는 구글링을 해도 해결방법이 전혀보이질않습니다.
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Dio로 api 요청 듣고 있는데 에러가 발생합니다 ㅜㅜ
E/flutter ( 4589): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioError [DioErrorType.connectTimeout]: Connecting timed out [0ms]ElevatedButton( onPressed: () async { final rawString = 'test@codefactory.ai:testtest'; Codec<String, String> stringToBase64 = utf8.fuse(base64); String token = stringToBase64.encode(rawString); final resp = await dio.post( 'http://$ip/auth/login', options: Options( headers: {'authorization': 'Basic $token'}, ), ); print(resp.data); }, style: ElevatedButton.styleFrom( backgroundColor: PRIMARY_COLOR, ), child: Text( '로그인', ), ),코드를 잘못 작성한건가요?ㅜㅜ
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
백엔드에서 처리해야될것들이 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 안녕하세요 . 중급 강의에서는 백앤드 처리가 되어있어서 그런데개인적으로 앱을 개발하려면백앤드에서 하는 일이 로그인시 아이디 비번 토큰 변환 회원정보 디비 저장, 회원정보 , 게시글 및 데이터들 데이터베이스에 작성 및 읽기 수정 삭제 토큰 + 데이터베이스 관련된 기능만 하는거일까요 ?? 예를들면 개인적으로 스프링 + 아파치 + mysql 로 구성해서 http 통신으로 데이터만 주고 받으면앱출시 목적으로 구현이 가능한건가요 ? 웹은 어느정도 아는데 앱은 처음이라 많이 모자르네요
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 Mac 셋팅중입니다 ㅠㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! [질문]이렇게 현재 시킨대로 셋팅했는데코드팩토리님이 말씀하신 플러터 경로가 나오지 않습니다 ㅠ그결과 역시 코드팩토리님과 동일하게 넘어가지지가 않아질문 드립니다 ㅠㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
페이지 이동할때 context 를 어떻게 받아오나요?
코드정리하려고 floatingActionButton 을 따로 빼서 정의하려는데 context는 어떻게 받아올수있나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
에뮬레이터 실행시 오류
에뮬레이터 실행시 오류가 생겼습니다. 무엇이 문제인지 모르겠습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
asset추가하기
asset 추가하기 강의에서 asset파일을 복사하고 paste 누르는데 강의에 나오는 팝업창은 안뜨고 아무 일도 안일어나요ㅜㅜ왜 이런거죠?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
secureStorage provider 질문드립니다!
final storage = FlutterSecureStorage();으로 선언되어있는것은 어느곳에서 불러오더라도 같은 instance인데, provider로 선언해서 호출하는 이유가 있을까요?