개발자

Flutter에서 Ini File

2024년 02월 07일조회 165

VSCODE환경에서 Flutter를 이용해서 Android app을 개발중입니다. ini file을 통해 ip address등 환경변수들을 저장하고 싶은데, ini.dart 나 ini_file.dart등 package를 써봤는데, 권한 문제인지 경로문제인지 화일을 찾을수 없다고 나오거나, (OS Error: Read-only file system, errno = 30)이런 에러가 뜹니다. 아직 Flutter는 초보라서 잘 모르니 고수분들의 지도 간곡히 부탁드립니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

Jake님의 프로필 사진

WRITE_EXTERNAL_STORAGE permission 체크해주세요!

Jake님의 프로필 사진

Jake

Cybozu 안드로이드/플러터 개발자2024년 02월 07일

앗 근데 에러만 보고 답변하긴 했는데, 좀만 더 추가적으로 답변하자면, 환경변수를 저장하시는 방법으로는, flutter run --dart-define-from-file=.environment.json 과 같은 방법으로 환경변수 파일을 지정해서 실행하시고, 해당 파일 안에 String 등의 형태로 IP address를 저장하시는걸 추천드립니다. Flutter 내에서 해당 환경변수에 액세스하시려면 String.fromEnvironment(KEY); bool.fromEnvironment(KEY); 와 같은 형태로 액세스가 가능하세요.

Jimmy Kim님의 프로필 사진

Jimmy Kim

작성자

프로페셔널어쿠스틱스 임베디드 개발자2024년 02월 07일

그부분은 이미 체크했고 이상없다고 뜹니다. 그런데도 새로화일 만들려면 read-only, 읽으려면 화일이 없다고 나옵니다. 혹시 특정 디렉토리같은걸 정해야 하나요 ?

Jimmy Kim님의 프로필 사진

Jimmy Kim

작성자

프로페셔널어쿠스틱스 임베디드 개발자2024년 02월 07일

문제는 단순히 읽는게 아니고 내용을 수정, 저장등도 해야합니다.

Jake님의 프로필 사진

Jake

Cybozu 안드로이드/플러터 개발자2024년 02월 07일

환경변수를 저장하는 파일을 직접적으로 수정하시겠다는 말씀이신가요?

Jake님의 프로필 사진

Jake

Cybozu 안드로이드/플러터 개발자2024년 02월 07일

만약 그런거라면 경로 문제가 거의 확실한거같습니다만, 좀 더 자세한 내용이 필요할거같아요

Jimmy Kim님의 프로필 사진

Jimmy Kim

작성자

프로페셔널어쿠스틱스 임베디드 개발자2024년 02월 07일

PC영 어플이면 ini 화일에 뭔가를 쓰기도 하고 실행 초기에 읽기도 하고 하는데 그걸 안드로이드에서 하고 싶은겁니다. 개발은 Flutter 로 하고요. ini 나 Jason등 상관없는데, 일단 경로와 Permission등에 문제가 있는거 같아요. Write_externnal_storage permission은 정상으로 나옵니다. 환경은 Win11, VSCode, Flutter이고 target은 android app입니다.

Jake님의 프로필 사진

Jake

Cybozu 안드로이드/플러터 개발자2024년 02월 07일

네, 말씀하신것만 들어서는 딱히 문제가 없는것같아서요. 꼭 파일로 저장해야만 하는 Usecase인가요?

Jimmy Kim님의 프로필 사진

Jimmy Kim

작성자

프로페셔널어쿠스틱스 임베디드 개발자2024년 02월 07일

맞습니다. 변수를 외부에서 받아서 저장하는 부분이 있습니다.

Jake님의 프로필 사진

Jake

Cybozu 안드로이드/플러터 개발자2024년 02월 07일

지금 정보로 의심되는건 경로설정밖에 없네요..! 급하시면 챗 주세요!!

Jimmy Kim님의 프로필 사진

네 외부에서 데이터 받아서 수정하는 부분이 있습니다. ini, jason등은 상관없는데, read, write가 모두 되어야 합니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 02월 07일

Flutter에서는 환경설정이나 비밀키 같은 정보들을 담기 위해 별도의 패키지를 사용하는 것이 일반적입니다. 별도로 ini 파일을 이용하신다면 경로나 권한 문제가 발생할 수 있습니다. 보다 쉽게 환경설정을 관리하시려면 `flutter_dotenv`라는 패키지를 추천드립니다. 이 패키지를 사용하시면 `.env` 파일로 환경 설정을 관리하실 수 있습니다. 1. 먼저 pubspec.yaml 파일에 의존성으로 flutter_dotenv를 추가합니다. ```yaml dependencies: flutter: sdk: flutter flutter_dotenv: ^4.0.0-nullsafety.0 ``` 2. 그런 다음 프로젝트 루트에 .env라는 이름의 파일을 만듭니다. ```dotenv IP_ADDRESS=your_ip_address ``` 3. 마지막으로, 앱이 시작할 때 해당 설정파일을 load합니다. ```dart void main() async { await dotenv.load(); runApp(MyApp()); } // 이후에 IP 주소를 가져오기 위해서는 dotenv.env['IP_ADDRESS'] 를 사용하시면 됩니다. ``` dotenv.env는 Map 형태로 환경변수들을 저장합니다. 참고하세요, .env 파일은 공개 Repo에 push하지 않도록 .gitignore에 추가해주셔야 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!