본문 바로가기

전체 글

[Flutter] 자식 위젯에서 부모 위젯 상태 변경 방법(findAncestorStateOfType, 함수 전달) 코드를 짤 때 코드 분리를 잘 하지 않는 습관이 있는데, 고쳐야지,,하다가도 막상 고치지는 못했었는데, 이번에 프로젝트를 하면서 코드 길이가 너무 길어지는데다가 코드를 재사용해야하는 경우가 생겨서 위젯 파일 분리를 해야했다. 다른 것들은 다 할만 했으나 자식 위젯에서 부모 위젯의 상태를 변경할 수 있는 방법이 헷갈렸었는데, 두가지 방법을 정리해보고자 한다. 1. findAncestorStateOfType() 함수 사용하기 상대적으로 간단한 방법이다. 공식 문서를 보면 이 함수는 BuildContext 하에 있는 함수로, T타입의 StatefulWidget의 가장 가까운 ancestor의 State 객체를 리턴한다. 따라서 findAncestorStateOfType 함수는 자식위젯의 build 함수 내에서.. 더보기
[Flutter] 카카오로그인, iOS 설정 에러 해결법 정리 이번에 프로젝트를 하면서 세세하게 배운 점도 많고 대충 앱을 개발할 때 어떠한 식으로 굴러가는구나라는 대략적인 순서를 아는데 많이 도움이 되었다. 지금까지 협업을 해본 적도 없고 깃헙도 최근에 사용하기 시작해서 너무 헷갈리고 어려웠었는데, 플젝 팀원이 많이 도와주셔서 브랜치 사용이 이제 좀 이해가 된달까... (매우 감사했습니다!) 이후에 Solution Challenge도 이러한 느낌으로 흘러가겠구나, 그리고 어떠한 점들을 더 공부해야겠구나를 알게 되었는데, 역시 실전(?)에서 부딛치면서 배우는 게 가장 배우는 것도 많구나를 또 느꼈다. 그런데, 생각보다 이번 플젝은 진심으로 너무 힘들었던 게 에러와의 싸움이었다..... 무슨 플젝을 하던지 마찬가지였겠지만, 유독 이번에 코로나 걸리면서 거의 2주를 생.. 더보기
[오토마타 이론] 유한 오토마타 기본 (언어, DFA & NFA) 이번에 ReDoS 관련 발표를 준비하면서 깨달은 거지만 유한 오토마타에 대한 기본 개념을 배웠었다.. FSM(finite-state machine)이란 이름으로 말이다. 아예 까먹고 있다가 기억나서 다시 공부해본 김에 잊어버리기 전에 정리해두기로 했다. Automata = 이산 시간동안 주어진 입력에 의존해 작동하는 수학적인 기계 유한 오토마타 정의 오토마타라는 단어가 '자동'을 뜻하는 그리스어에서 왔다고 하는 데, 오토마타는 미리 정해진 명령에 의해 자동으로 반응하는 계산 능력을 지닌 기계장치를 추상화한 것 정도로 생각하면 된다. 오토마타는 물리적으로 존재할 수도 있고 존재하지 않아도 된다. 그 중에서 유한 오토마타는 이름에서 알 수 있듯 finite하다. 즉, 유한한 개수의 상태를 가진 오토마타를 지.. 더보기
[Flutter] Null Safety 💪Building with sound null safety💪 Run을 하면 터미널에서 자주 보게 되는 문구인데, 이번에 오디오 플레이어를 만들어보면서 헷갈리는 문법이 있어 찾아보다가 null safety에 대해 블로그도 작성하게 되었다. 공부하고 보면 쉬운 개념인 듯. Null Safety란? Null Safety = prevents errors that result from unintentional access of variables set to null Dart 2.0부터 적용된 개념으로 변수에 null값이 오지 못하게 함으로써 변수에 null이 할당되면서 생길 수 있는 에러나 의도하지 않은 동작이 실행되는 것을 방지한다. 만약 변수에 null 값이 오게 된다면 컴파일 에러가 뜬다. 현재 사용하는 대.. 더보기
[Flutter] Flutter CLI (Command-Line Interface) CLI란? CLI = how developers (or IDEs on behalf of developers) interact 대부분의 운영체제에서 사용자와 컴퓨터가 상호작용하는 방식을 CLI라고 한다. Windows 유저라면 CMD 창을, Mac os 유저라면 Terminal 창에서 CLI를 사용한다. Flutter의 경우, 보통 VIsual Studio Code나 Android Studio, XCode 등의 IDE를 사용하기에 Flutter app을 개발할 때 CLI를 쓸 일이 많지는 않지만, 알아둔다면 종종 create, run, analyze, test 등에 사용할 수 있으니 알아두도록 하자. 먼저, Flutter에서 지원하는 모든 명령어(command)를 아래 명령어를 통해 찾아볼 수 있다. fl.. 더보기
[Flutter] FVM (Flutter Version Management) 사용 방법 (Windows) "FVM이란?" FVM = Flutter Version Management fvm은 각 프로젝트 별로 Flutter SDK 버전을 선택해서 사용할 수 있게 하는 라이브러리이다. (https://fvm.app/) 만약 fvm이 없다면, 한창 개발하고 있는 혹은 이미 개발이 완료되어 출시된 앱을 플러터 버전을 맞추기 위해 매번 수정해야하고, 이를 피하기 위해 프로젝트의 플러터 버전을 유지한다면 프로젝트마다 버전을 다시 설치해야한다. 혹은 협업을 할 때 개발자마다 가지고 있는 플러터 버전이 다를 수도 있다는 문제점이 생긴다. 이러한 비효율을 피하기 위해 fvm은 개발자가 플러터 버전을 원하는 것으로 골라 관리할 수 있게 해준다. FVM 설치(Windows 기준) 1. 먼저, 터미널이나 명령프롬프트를 열고 아래.. 더보기
[네트워크] DNS란? 이번에 네트워크 수업을 들을 수 있었으면 더 좋았겠지만, 언젠간 공부하게 될테니 미리 하나 알아가는 느낌으로 DNS에 대해 좀 알아보기로 했다. "What is DNS?"IP 주소 = Internet Protocol AddressIP는 Internet Protocol의 줄인말로, 네트워크에서 정보를 주고받는 통신에 대한 규약이다. 우리가 흔하게 IP라고 하는 것이 규약을 뜻하는 것은 아닐테니 정확한 용어로 IP주소라고 해야한다. IP 주소는 IP 통신에 필요한 고유 주소를 말하며, 중복되지 않아야 한다.쉽게 말하자면, 전화에 비유할 수 있을 것 같다. 전화를 하기 위해 두가지가 전제된다고 생각하면 되는데, 먼저 받는 대상의 전화번호가 먼저 있다. 이를 통해 다른 사람에게 접근할 수 있는 것이다. 그리고 .. 더보기
[Flutter] Widget이란 무엇일까?(Stateful vs Stateless, Lifecycle, Scaffold) "Flutter에서 위젯(widget)이란?" 위젯(widget) Flutter에서는 화면을 그리는 모든 디자인 요소를 widget이라고 한다. 즉, 앱에서 보이는 모든 것이 위젯에 포함된다. 좀 더 자세히 설명하자면, 1. UI를 만들고 구성하는 모든 기본 단위 요소 (EX : text, icon, image, text field, button) 2. 레이아웃을 구성하는 눈에 보이지 않는 요소 (EX : center, column, padding) 이다. 결국, 앱 그자체도 위젯이 되며 말 그대로 모든 것이 위젯이라고 보면 된다. (Flutter에서 제공하는 위젯을 기능에 따라 카테고리로 정리된 페이지를 첨부해둔다. https://flutter-ko.dev/docs/development/ui/widge.. 더보기