Flutter/캠프

Flutter 숙련_개인프로젝트: 지역 검색 앱

우왕차 2024. 12. 9. 20:10

1. Lint 수정

 예전부터 flutter 과제나 강의 실습을 할 때 const를 사용하라는 파란 줄이 뜨는 것이 거슬렸다. 다른 것을 검색하다가 Lint를 수정해서 없애는 방법을 찾게 되었다. 우선 Lint가 무엇이냐,  코드의 스타일을 통일하고 잠재적인 버그를 찾기 위해 정해놓는 규칙들이다. 그러면 왜 const를 사용하라고 하는 걸까?

먼저 const는 상수이다. 상수는 변하지 않는 값이라는 뜻으로 변하는 값인 var과 반대되는 뜻을 가진다. 그러면 const를 사용하면 어떤 점이 좋을까. const를 사용하면 위젯의 값이 변하지 않게 되고, 이를 명시해놓으니 랜더링 할 때 불필요한 자원과 시간을 절약할 수 있게 된다. 그래서 const사용을 권장하기 위해 lint에서는 파란 줄로 알려주는 것이다. 그런데 그 정도로 속도가 빨라지기 위해서는 랜더링 할 양이 많아야 할 것이다. 그런데 공부하기 위해서 만드는 앱에서는 굳이 const까지 사용할 필요가 없다. 그래서 const를 사용하지 않아도 파란 줄이 생기지 않게 해 보았다. 

 

prefer_const_constructors : false

analysis_options.yaml파일에 위의 규칙을 추가하면 바로 해결이 되는 것을 볼 수 있다. 이외에도 여러가지 규칙을 추가해서 다양한 이유로 생기는 파란 줄이 생기지 않게 할 수 있다. 하지만 그게 왜 그렇게 권하고 있는지 한번 생각해 볼 필요도 있다.

 

 

 

2. HTML Tag

Naver api를 통해서 지역 정보를 받아오는 과정에서 문제가 발생했다. 지역 이름에 html 태그가 포함되어있는데 그것이 같이 화면에 뿌려졌다. 그래서 이를 없애는 방법을 검색해 봤다. 정규표현식을 사용하거나, parser를 이용하는 방법이 있었다. 나는 parser를 이용하기로 했다. 

 

parser 라이브러리를 이용해서 아래의 함수를 만들었다.

String parseHtml(String htmlString) {
  var document = html.parse(htmlString);
  return document.body?.text ?? '';
}

 

html.parse(htmlString)으로 가져온 텍스트를 html 텍스트로 변환을 해줍니다. 

document.body?.text ?? '' 우선 가져온 텍스트가 없을 경우에는 오류 없이 '' 빈값이 들어가도록 설정해 줍니다. 그리고. text를 이용해서 html 텍스트중에서 태그가 아닌 순수 텍스트만 걸러서 리턴해줍니다. 이렇게 되면 태그 없이 텍스트만 표시할 수 있게 됩니다.

 

 

 

 

 

추가적으로 처음에는 리스트가 무조건 길이가 1로만 불어져 왔었다. 알고보니 지역 검색은 길이를 따로 설정하지 않으면 길이가 1로 설정되도록 되어있었다. 그래서 따로 요청 URL에 길이를 추가적으로 설정 해주면서 해결했다.