Flutter
회기역 지하철 시간 타이머 앱 - 3 (http 연결)
HAHAKO
2023. 5. 4. 12:49
이제 http연결해서 xml파일을 받아오기만하면 parse가 된다.
http연결이 되게 복잡해 보였는데 생각보다 간단했다.
다만 동기 비동기신호를 구분하고, 1초마다 갱신해준다는 점이 조금은 어려웠다.
Future<xml.XmlDocument> fetchXmlData() async {
final response = await http.get(Uri.parse('http://swopenapi.seoul.go.kr/api/subway/6a684e6f49646d733130364c4b74466e/xml/realtimeStationArrival/1/3/회기'));
return xml.parse(response.body);
}
test('subway', () async {
final document = await fetchXmlData();
final items = document.findAllElements('row');
var subway = <Subway>[];
items.forEach((node) {
subway.add(Subway.fromXml(node));
});
for (var subway in subway) {
Text(
'${subway.trainLineNm} : ${subway.recptnDt}',
);
}
});
방법은 간단했다.
xml 라이브러리와 Future를 이용하면 됐다.
http.get으로 비동기신호로 get을 하고 xml을 받는다
이를 xml로 parse한 방법과 동일하게 parse하면 원하는 데이터를 얻을 수 있다.
생각보다 단순했는데 동기 비동기가 조금 까다로워서 오래걸렸던 것 같다.