Flutter

제가 참여했던 인턴 프로젝트에서는 백엔드와의 API 통신을 통해 정보를 가져오는 모든 부분이 Future 방식으로 구현되어 있었습니다. Future는 Flutter의 대표적인 비동기 처리 방식으로, 한 번의 API 요청으로 데이터를 가져오는 데는 매우 적합합니다.하지만 프로젝트를 진행하면서 한 가지 큰 문제점을 발견했습니다. 바로 실시간으로 정보가 업데이트되어야 하는 중요한 기능들까지도 Future를 통해 처리하고 있었다는 점이었습니다.예를 들어, 실시간으로 변동되는 주문 상태나 알림 같은 정보들이 이에 해당했습니다. 당시에는 이러한 '실시간' 데이터를 가져오기 위해 Future를 **일정 시간마다 반복적으로 호출(폴링)**하는 방식으로 구현되어 있었습니다. 이 방식의 문제점은 명확했습니다Future는 ..

인턴이지만 내가 일하게 된곳에는 flutter를 메인으로 하는 곳이 아니였다. 그래서 바로 flutter 프로젝트에 참여하게 되었다. 인원이 부족했기 때문에 나의 부족한 지식으로도 곧바로 도움을 줄 수 있어서 좋았다.참여하게된 프로젝트에서 가장 처음으로 눈에 띄는게 Route 방식이였다. Navigator, GoRouter만을 사용해보았었고, GoRouter가 워낙 좋았어서 다른 Route 방식을 찾아보지 않았었다. 그런데 회사 프로젝트에서는 처음 보는 Route방식을 사용하고 있었다. Named RouterNamed Route는 페이지의 이름을 정의해서 navigator에 이름으로 화면으로 전환하는 방법입니다.import 'package:flutter/material.dart';void main() {..


독서록 앱에는 책 검색 기능을 사용하고 있는데 검색을 할때 바로 원하는 책을 찾을 수 없을 수도 있습니다.. 그렇지만 한번에 많은 양의 정보를 요청하면 앱의 속도가 느려질 수 있으니 적은 수를 원할때마다 요청 하면서 속도를 높이는데 이때 사용할 수 있는것이 무한 스크롤입니다.1. api 분석API요청에는 무한 스크롤처럼 데이터의 중간부분만 요청 할 수 있게 설정할 수 있는 파라미터가 있는 경우가 있습니다. 없다면 구현이 불가능 할 수 있으니 가장 먼저 확인해줍니다. 다행히 데이터 요청의 시작지점을 설정할 수 있어서 사용할 수 있다는 것을 확인했습니다.2. Start 파라미터 추가하기데이터를 요청 할 때 start의 위치를 알려줘야하므로 함수 마다 start를 추가해줍니다.3. 검색 함수를 수정한다. i..

독서록 앱에서 책 정보를 일일이 입력하기 보다 검색을 통해서 책정보를 가져오면 좋을 거 같아서 찾아보니 여러곳에서 책 api를 제공하고있었습니다. 책 제목, 저자, 출판사 등의 간단한 정보만 필요하기 때문에 그 중에서 가장 친숙한 naver api를 이용하기로 결정했습니다.api 통신을 할 때는 역직렬화라는 여러 단계를 거처야 json 형식으로 오는 데이터의 요소를 필요에 따라서 이용할 수 있습니다. 이를 간편하게 해주는 라이브러리 Freezed 가 있어서 사용해보기로 했습니다.https://totally-developer.tistory.com/139 [060] 플러터 (Flutter) 배우기 - freezed 사용하기 1안녕하세요~ totally 개발자입니다. 먼저 이 포스팅 보시기에 앞서 지난 059..


BottomNavigaionBar는 어떤 앱이든 많이 사용하는 화면 전환방식 중 하나입니다. MUOZ 프로젝트에서도 사용하고 있습니다. 1. 모든 페이지에 BottomNavigationBar 적용하기첫번째로 사용한 방식이 NavgationBar가 있어야하는 모든 페이지에 BottomNavigationBar를 띄우는 방식을 사용했습니다. 일단은 구현해놓고 기능적을 완성하고 나서 수정하기로 했습니다.문제 발생큰 오류가 발생하고 수정하는 과정에서 수정하지 못하고 있었습니다. 그래서 화면에서 나오는 문제가 있었습니다. 네비게이션으로 화면 전환는 정상적으로 작동하지만 화면이 전활될때 BottomNavigationBar도 같이 새롭게 보여지고 있었습니다. 2. shellroute 사용하기navigation을 Go..

StatefulWidget의 생명주기에 대해 설명하세요.위젯 구축createState() : StatefulWidget을 사용할 때 가장 먼저 호출된다.initState() : 위젯이 생성될때 호출되는 메서드로 한번만 호출된다.didChangeDependencies() : initState 다음으로 바로 호출 되며 위젯이 의존하는 데이터의 객체가 호출될때마다 호출된다.재 드로잉dirtry : 화면의 다시 빌드를 해야하는 상태didUpdateWidget() : 위젯이 변경될때 마다 호출되어 다시 build를 진행한다.(새로운 화면)build() : 위젯을 반환하고 반환된 위젯이 랜더링 되어 화면에 표시된다.setState() : 객체의 상태가 변경되었음을 프레임워트에 알린다.(기본화면의 변화)clean :..

애니메이션 속성 중 curve 와 duration 에 대해 설명하세요.curve는 애니메이션의 속도와 움직임을 정의하는 함수duration은 애니메이션의 지속 시간을 나타내는 함수입니다. 암시적 애니메이션과 명시적 애니메이션의 차이는 무엇인가요? 암시적 애니메션은 개발자가 직접 구현하지 않아서 위젯의 변화를 자동으로 애니메이션으로 구현해주는 방식명시적 애니메이션은 개발자가 애니메이션을 직접 제어하는 방식 Flutter에서 스로틀링은 무엇인가요? 예를 들어 설명하세요.특정 시간 내에 중복적으로 이벤트가 발생하면 한번만 실행되도록 하는 기능검색을 할때 쓰로틀링으로 2초을 걸어두면 2초안에 몇번의 요청을 하더라고 2초에 한번씩만 요청을 실행한다. Flutter에서 디바운싱은 무엇인가요? 예를 들어 설명하세요...

Flutter 앱 개발에서 ‘상태’란 무엇을 의미하나요?Flutter에서 위젯의 현재 테이터나 UI의 상태를 의미합니다.ListView, ListView.builder, SingleChildScrollView + Column 3가지의 차이점은 무엇인가요?ListView는 스크롤 가능한 리스트를 생성하며, 미리 지정된 자식 위젯을 children 속성을 통해서 한번에 모두 생성합니다.ListView.builder는 ListView와 다르게 화면에 보여지는 속성만 생성하고 itemCount와 itemBuilder로 조절 합니다.SinglechildScrollView+Column은 단일 위젯만을 스크롤 가능하게 바꿔주는 역할을 합니다. 그렇게 때문에 ListView와 동일하게 자식 위젯을 한번에 모두 메모리에..

앱을 만들다 보면 다양한 정보를 저장해야 하는 상황이 생깁니다. 보안, 사용성, 속도 등에 따라 상황에 맞는 방법을 선택해야 합니다. 오늘은 로컬에 저장되고 방법이 매우 간단한 shared_preferences 패키지를 이용하는 방법에 대해서 알아보겠습니다. 1. SharedPreferences란?SharedPreferences는 안드로이드와 iOS에서 간단한 데이터를 로컬에 저장할 수 있는 방법입니다. 이 저장소는 앱이 종료되거나 재시작을 하더라고 휘발되지 않고 남아있어 다양한 곳에서 사용하기에 적합합니다. 2. SharedPreferences 사용법1. 패키지 설치터미널에서 명령어로 설치를 하던가flutter pub add shared_preferencespubspec.yaml에 직접 추가한 후에 ..