본문 바로가기
Flutter/Flutter FAQ

Flutter 파일을 불러오기 전에 해당 파일이 존재하는지 확인하세요., Check if a file exists before loading it

by 베타코드 2023. 9. 21.
반응형

질문


내가 하고 싶은 것은 Material 위젯에 이미지를 로드하여 ListTile에서 사용하는 것이지만, 이 자산이 존재하지 않을 수도 있습니다.

class MyImage extends StatelessWidget {
  final imagePath;

  MyIcon(String iconName) {
    try { // imagePath가 존재하는지 확인합니다. 여기가 문제입니다.
      imagePath = check('assets/$iconName.png/');
    } catch (e, s) { // 그렇지 않으면
      imagePath = 'assets/$iconName.png/';
    }
  }

 @override
  Widget build(BuildContext context) {
    return Material(...이곳에 imagePath를 로드할 것입니다...);
 }
}

그래서 Stateless 위젯을 사용하기 때문에 이미지가 존재하는지 사전에 알아야하고, 그렇지 않으면 null을 로드해야 합니다.


답변


앱의 내부 로컬 저장소에 파일이 존재하는지 여부를 확인하려면 다음을 사용하십시오:

import 'dart:io' as io;
var syncPath = await path;

// 파일인 경우
await io.File(syncPath).exists();
io.File(syncPath).existsSync();

// 디렉토리인 경우
await io.Directory(syncPath).exists();
io.Directory(syncPath).existsSync();
반응형

댓글