Exception caught by image resource service Unable to load asset: "
일단 ChatGPT 햄한테 물어보면 다음과 같은 원론적인 대답이 나온다
"Exception caught by image resource service Unable to load asset"는 Flutter에서 이미지 리소스를 로드하려고 할 때 발생할 수 있는 일반적인 예외입니다. 이 예외는 이미지 파일이 앱의 빌드 설정 또는 앱의 코드에서 잘못 처리되었을 때 발생할 수 있습니다. 가장 일반적인 이유는 이미지 파일의 경로가 잘못되었거나 해당 파일이 앱의 pubspec.yaml 파일에 추가되지 않았기 때문입니다. pubspec.yaml 파일은 Flutter 앱에서 사용되는 모든 리소스를 정의하는 파일입니다. pubspec.yaml 파일에 이미지 파일을 추가해야하며, 이미지 파일에 대한 정확한 경로를 지정해야 합니다. 또 다른 가능한 이유는 이미지 파일이 잘못된 형식이거나 손상되었기 때문입니다. 이 경우 이미지 파일을 다시 만들거나 대체해야 합니다.
이외에도 네트워크 연결이나 보안 권한 등의 이유로 이미지 파일을 로드할 수 없는 경우에도 위와 같은 예외가 발생할 수 있습니다. 해결책으로는 먼저 pubspec.yaml 파일에 이미지 파일이 추가되었는지 확인하고, 이미지 파일에 대한 경로가 올바른지 확인해야 합니다. 또한 이미지 파일이 손상되었거나 잘못된 형식인 경우 해당 파일을 대체하거나 다시 만들어야 합니다. 마지막으로 네트워크 연결이나 보안 권한과 같은 문제를 해결해야 할 수도 있습니다.
물론 저게 정답이지만, 일단 필자의 경우는 저기 저 경우와는 조금 다른 케이스인데, 개인적인 생각으로는 플러터 SDK가 요 며칠내 업데이트 되면서 뭔가 조금 바뀌었는데 그 이유로 버그가 생긴 것 같다. 발생한 현상은
원래부터 이런식으로 사용하고 있었고 (필자처럼 lib 폴더에 리소스 넣지 말길...🤣)
(주의: image, audio, font 등과 같은 리소스들은 루트의 assets 폴더 안에 저장해야 앱이 빌드될 때 파일이 압축되어 앱의 리소스로 포함되므로, 앱을 실행할 때 로드가 빨라진다)
pubspec.yaml 파일에서 이렇게 사용하고 있었다
이렇게 잘 사용하고 있었는데 오늘(2023/02/15) flutter upgrade를 하고 난 뒤부터
Exception caught by image resource service Unable to load asset: " 에러 메시지가 계속 뜨면서 이미지를 못 불러온다.
그래서 오랜 삽질 끝에 이렇게 변경하니 잘 된다.
추가적으로 한 행동이 또 있는데, precacheImage() 메서드를 사용했다가 별 효과 없어서 지웠는데 그거 때문에 뭐가 꼬인 것 같기도 하다. 예전에도 precacheImage() 쓰다가 조금 고생한 기억이 가물가물하다.
끗