본문 바로가기

Flutter

[Flutter] 자식 위젯에서 부모 위젯 상태 변경 방법(findAncestorStateOfType, 함수 전달) 코드를 짤 때 코드 분리를 잘 하지 않는 습관이 있는데, 고쳐야지,,하다가도 막상 고치지는 못했었는데, 이번에 프로젝트를 하면서 코드 길이가 너무 길어지는데다가 코드를 재사용해야하는 경우가 생겨서 위젯 파일 분리를 해야했다. 다른 것들은 다 할만 했으나 자식 위젯에서 부모 위젯의 상태를 변경할 수 있는 방법이 헷갈렸었는데, 두가지 방법을 정리해보고자 한다. 1. findAncestorStateOfType() 함수 사용하기 상대적으로 간단한 방법이다. 공식 문서를 보면 이 함수는 BuildContext 하에 있는 함수로, T타입의 StatefulWidget의 가장 가까운 ancestor의 State 객체를 리턴한다. 따라서 findAncestorStateOfType 함수는 자식위젯의 build 함수 내에서.. 더보기
[Flutter] 카카오로그인, iOS 설정 에러 해결법 정리 이번에 프로젝트를 하면서 세세하게 배운 점도 많고 대충 앱을 개발할 때 어떠한 식으로 굴러가는구나라는 대략적인 순서를 아는데 많이 도움이 되었다. 지금까지 협업을 해본 적도 없고 깃헙도 최근에 사용하기 시작해서 너무 헷갈리고 어려웠었는데, 플젝 팀원이 많이 도와주셔서 브랜치 사용이 이제 좀 이해가 된달까... (매우 감사했습니다!) 이후에 Solution Challenge도 이러한 느낌으로 흘러가겠구나, 그리고 어떠한 점들을 더 공부해야겠구나를 알게 되었는데, 역시 실전(?)에서 부딛치면서 배우는 게 가장 배우는 것도 많구나를 또 느꼈다. 그런데, 생각보다 이번 플젝은 진심으로 너무 힘들었던 게 에러와의 싸움이었다..... 무슨 플젝을 하던지 마찬가지였겠지만, 유독 이번에 코로나 걸리면서 거의 2주를 생.. 더보기
[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. 먼저, 터미널이나 명령프롬프트를 열고 아래.. 더보기
[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.. 더보기