앱/flutter

[flutter] 플러터 로컬 서버 api 오류 해결방법

tony1724 2025. 3. 23. 19:09

 

최근 플러터로 분실물을 신고하고 찾을 수 있는 간단한 앱을 만들고 있다.


vscode에서 Device를 편의상 크롬 웹으로 개발을 진행했었는데,

오늘 오랜만에 앱 시뮬레이터로 실행을 시켰더니 api 전송에 오류가 발생하는 것을 확인했다.

 

포스트맨에서는 잘되는데...

 

백엔드 서버를 같은 로컬환경에서 열었고, 웹과 postman에서는 정상적으로 api 요청이 되는 것을 확인했지만 정작 앱 환경에서는 아래의 오류가 발생했다.

 

오류 메세지

I/flutter ( 4101): {"email":"f","password":"f"}
E/flutter ( 4101): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Connection refused
E/flutter ( 4101): #0      IOClient.send (package:http/src/io_client.dart:94:7)
E/flutter ( 4101): <asynchronous suspension>
E/flutter ( 4101): #1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93:32)
E/flutter ( 4101): <asynchronous suspension>
E/flutter ( 4101): #2      _withClient (package:http/http.dart:166:12)
E/flutter ( 4101): <asynchronous suspension>
E/flutter ( 4101): #3      sendToServer (package:yu_lost_item/screens/login_page.dart:127:15)
E/flutter ( 4101): <asynchronous suspension>
E/flutter ( 4101): #4      LoginPage.build.<anonymous closure> (package:yu_lost_item/screens/login_page.dart:95:33)
E/flutter ( 4101): <asynchronous suspension>

 

오류메세지를 대충 보면 서버로 전송하는 과정에서 문제가 있어보인다.


구글링을 통해 원인을 찾아봤으나 마땅한 해결책이 없어 난항을 겪던 중 localhost를 본인 아이피로 바꾸라는 글을 보고 시도해보았다.

하지만, 경고메세지는 사라졌지만 여전히 벡엔드로 아무런 요청이 가지 않았다.

 

해결책

수 많은 구글링 끝에 해결책을 발견하였다.
안드로이드 시뮬레이터에서는 로컬호스트에 접근하기 위해서 10.0.2.2:port로 요청을 해야한다고 한다.

로컬호스트를 안드로이드 시뮬레이터에서 사용하고 있기 때문이다!


따라서, env 파일에서 서버 주소를 10.0.2.2로 바꾸니 정상적으로 작동하는 것을 확인할 수 있었다.

 

' > flutter' 카테고리의 다른 글

[flutter] 이미지 선택 및 전송 (+ spring s3 저장)  (2) 2025.03.23