1. 앱에 어울리는 애니메이션 구현하기 <Lottie편>
·
Flutter/Flutter
버튼을 클릭하고 해당 버튼이 동작함으로써 나 동작하고 있다 ! 라고 유저한테 알려줄 수 있는 방법이 무엇일까 고민해보니 애니메이션! 이 있었습니다. 이 경우 뿐만이 아니라 앱 내에서 애니메이션을 잘 사용하면 사용자 경험을 좋게 만들어 줄 수 있죠~ 애니메이션을 가장 쉽게 구현할 수 있는 방법 중 하나는 Lottie를 이용하는 것인데요. 한 번 천천히 알아보도록 합시다  제가 Lottie로 구현한 화면은 이렇습니다 로띠에는 굉장히 다양한 애니메이션이 있습니다. (+무료로 사용 가능하죠)https://lottiefiles.com/kr/ 무료 로티 애니메이션, 모션 그래픽을 위한 모든 플러그인과 도구를 한 곳에 - 로티파일즈/LottieFi로티파일즈/LottieFiles는 오픈소스 애니메이션 포맷 로티를 제공..
mainColor를 const로 고정해주고 싶었을 뿐인데
·
Flutter/Flutter
Colors.pink[100]을 mainColor로 설정해주려고하다가 다음과 같은 문구를 발견했다.엥 왜지? 이미 있는 값을 상수값으로 넣어주는건데 왜.라고 생각했지만  MaterialColor 객체에서 인덱싱[]을 통해 색상을 가져오는 과정은 런타임에 하는 것이었다. 왜냐면 일반적으로 인덱싱은 해당 데이터의 구조나 상태에 따라 달라지기 때문에 런타임에 결정이 되는 것이라고.... 이미 const로 정의된 List가 아닌 이상,, 런타임에 정의된다고 한다....  그래서 해결방법은, 런타임 상수인 final로 값을 결정해주거나 const로 쓸거면 이렇게 지정해주기이다.
핫 리로드는 정말 좋은거구나
·
Flutter
스유를 UIkit 보다 좋아하는 이유는 딱 하나였다.내가 만든 화면이 옆에 시뮬레이터로 바로 로드돼서 떴다반대로 UIkit으로 만들 때면 항상 run버튼을 누르고 시뮬레이터를 돌려줘야했다. 앱을 만들면 만들수록 기다리는 시간도 길어지고, 컴포넌트 하나 만들때마다 시뮬레이터 돌리기가 매우 불편하고 괴로웠던 기억이 있다. 🤢 그런데 플러터는 핫 리로드라는 기능 덕에 일단 시뮬레이터를 켜놓고 컨트롤 + s 만 누르면 바로바로 반영이 된다. 흐흐흐 나는 코드만 우다다닥 치는 것 보다 화면이 그려지는게 눈에 보여야 더 집중이 잘 된다.내 코드가 반영되는게 눈에 바로 보이니까 그런듯 하다. 아주아주 특별한 기능 아닌가? 내 코드로 화면 구성이 변화되는걸 바로바로 볼 수 있다니! ~.~(심지어 스유 프리뷰보다 빠르..
커피 한 잔 '김재호' 님의 특강을 들었다
·
개발새발자/의 삶
커피 한 잔 개발자 김재호 개발자님을 만나게 되었다 ( 새싹 최고 )  강의장 들어오시자마자 그래 나 개발자야. 라는 포스를 뽐내고 계셔서 한 눈에 알아볼 수 있었다. ㅎㅎㅎ나는 까먹기 대마왕이라 항상 메모를 하는데, 강연을 들으며 메모한 문장들을 다시 꺼내먹어보도록 하겠다.개발자의 path는 다양하다. 정답은 없다. 1인 개발자도 무조건적인 정답이 아니다.  여러분 시선에서만 볼 수 있는걸 찾아라앱 소비자 로그를 열심히 봐라  사람마다 개인의 context는 너무나도 다르다. 그가 어디에서 자랐는지, 누구를 만났는지, 성격적 특성, 트라우마, 현재의 고민 등등. 우린 아주 다른 배경들을 지녔다. 그치만 우린 자꾸 정해진 정답을 원한다. 1인 개발자, ㅇㅇ개발자, 대기업 취직 등등 답이 있길 원한다 (그..
위젯 만들 때 마다 계속 나오는 @override와 super.key는 뭐지?
·
Flutter/Flutter
1. @override- 명시적 재정의: 부모 클래스에 있는 메서드를 자식 클래스에서 재정의하고 있다는 것을 명확하게 보여준다. 사실 굳이 쓰지 않아도 되는 어노테이션인거다!  import 'package:flutter/material.dart';void main() { runApp(const MyApp());}class MyApp extends StatelessWidget { const MyApp(); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( home: LandingPage(), ); }}ex) 위 코드 `My..
왜 자꾸 const를 쓰라고 하는거지?
·
Flutter/Flutter
UI를 만들고 있는데, 수많은 노란 줄이 뜬다 다 const를 쓰라는 요청인데, 자세히 읽어보면 Use 'const' with the constructor to improve performance 라고 나온다.즉 const의 사용이 퍼포먼스 향상에 도움이 된다는건데, 왜인지 살펴보도록 하자const는 상수를 쓸 때 썼던 키워드다컴파일 타임에 값을 고정하는 개념으로, 불변성을 보장한다 즉 const의 역할은 1. 객체를 재사용하고,2. 불필요한 빌드를 방지하며, 런타임 연산을 줄임으로써 성능을 최적화하는 것이다.📖 정리런타임 연산엔 cpu의 자원을 쓴다. const를 쓰면 const로 값을 고정한다. (더 이상 변하지 않는다) 그렇다면 cpu는 한 번만 값을 기억하면 더 이상 자원을 써도 되지 않게 된다..
1. Postman 사용해보기
·
Flutter/Flutter
Postman : api 사용을 쉽게 테스트 할 수 있도록 도와주는 툴이다 ! 다운로드 링크 https://www.postman.com/downloads/ Download Postman | Get Started for FreeTry Postman for free! Join 30 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.www.postman.com Restful API를 사용하기 전에 이걸로 테스트 해보곤 하는데,https://web.postman.co/웹으로도 이용할 수 있는듯하다. 다운로드와 '동일하게' 작동하는지는 모르겠다   포스트맨 이용..
새싹 용산캠퍼스 4주차 회고
·
개발새발자/의 회고
1.오늘 깃과 플러터 프로젝트 연동을 시작했다~! 플러터 튜토리얼들을 이것저것 보고 있는 중인데 UI를 손쉽게 구현할 수 있다는 점이 맘에 든다 ! 아직 알아야할게 산더미지만 Material Design 3 ? 이라는 시스템도 있고 이미 구현된 UI 틀이 많아서 개발자에게 편리하겠군 이라는 생각이 들었다.맨 처음 플러터 프로젝트를 run 하면 보여주는 화면인데처음에 시뮬레이터를 실행하고 아주 깜짝 놀랐다. 하-얀 빈 화면이 아니라 사용자와 인터렉트를 할 수 있는 화면을 기본으로 구현하는구나..! 싶었다 (많이 보여준다~ 라는 느낌이 들었다)신기해서 친구에게 보여줬더니.. 오 되게 안드스럽다. 라고 했다. 특히 저 debug 라고 감싸져있는 띄나 플로팅 버튼의 shadow가 그렇다고 했다 ㅋㅋㅋㅋ HIG에..
개발자의 스레드 관리는 비효율적 in 플러터
·
Flutter/Flutter
조금은 당돌한 제목으로 시작하는 플러터의 동시성에 대한 글이 글은 수업 중 강사님의 말로 시작됐다.. flutter는 단일스레드를 원칙으로해요  일반개발자가 스레드 건드리는 것보단 컴퓨터한테 맡기는 걸 더 효율적으로 보는거야   ... 네에~?~?~?!!! 메모리 관리는 개발자의 꽃. 아니었나요?  iOS는 기본적으로 UI작업을 메인스레드에서만 진행한다. 오래걸리는 네트워킹 및 등등등 많은 작업들이 메인스레드에 추가되게되면,메인스레드가 스파이크를 찍어 cpu사용량을 110%를 찍을때가 있다. 이러면 느려져서 디버깅을 통해 앱이 왜 느려졌는지, 어디서 느려졌는지 파악하고, 만약 메인스레드에 너무 몰려있는게 원인이 될시에 개발자들은 작업들을 큐로 분산시켜 메인스레드가 하는 일을 줄여줘야한다 .Swift는 G..
Stream, Future 둘의 차이점은 뭐지?
·
Flutter/Dart
🤓❔❓나의 의문점 :Stream이 뭘까?기존 반응형 프로그램에서 얘기하는 Stream과 같은 스트림인가 ( 아니다.. 그냥 비동기 처리를 위해 만들어진 스트림일뿐이었다)둘 다 비동기 프로그래밍 관련한거라면 Future와 Stream은 언제쓰는거지.. 잘 이해가 안가서 작성하는 글  1. Stream 알아보기- Stream이란?Stream은 마치 파도처럼 데이터를 한 줄로 보내는 거라고 생각하면 된다. 데이터를 한 번에 다 보내는 게 아니라, 순서대로 하나씩 흘려 보내는거다. 마치 물이 흐르는 강이나, 한 줄로 나란히 서 있는 사람들이 차례로 앞으로 걸어가는 것과 비슷하다. 예를 들어보자. 유튜브 에서 동영상을 본 적이 있을 거다. 동영상이 한 번에 모두 로딩되는 게 아니라, 조금씩 조금씩 로딩되면서 재..
Enum이 뭐고, Enhanced Enum은 왜 쓸까?
·
Flutter/Dart
Enum- 열거형, Enum에 있는것들은 상수다.- 유한한 상수 집합이라는 특징을 가지고 있다.- UpperCamelCase로 작성해야됨 enum Color { red, green, blue } Color.red : 이 자체가 Color type값 Color.red.name : red 라는 String (String 값이 필요하면 name으로 읽으면 됨) Color.red.index : red 가 위치한 index, 0부터 시작 Color.vlaues : iterable하게 enum을 쓸 수  있다. list화 시켜주는거임  map,list 와 달리 enum을 쓰는 이유 list. map은 리스트 맵이 나열된 값을 쓰는 경우가 꽤 많은데, 이런 일반적인 Map,list를 쓰면 개발자가 '해석'해야됨 (비..
Call by Reference, Call by Value, 깊은 복사, 얕은 복사 in Dart
·
Flutter/Dart
이 글에서는1. 얕은 복사(Shalldow Copy)2. 깊은 복사(Deep Copy)3. Call by Reference4. Call by Value5. 깊은 참조?의 개념이 나옵니다. 단어가 매우 많이 나오니 헷갈리지 마시길 ! 기존에 나는 ! 위에 나오는 개념들에 엄청난 혼동이 왔었다. Call by Value는 원본 값을 바꾸지 않기 때문에 얕게 복사하는 것이다 ! 라고 생각했고, Call by Reference는 메모리 주소로 접근하기 때문에 원본을 건드린다 즉 깊게 참조하는 것이다. 라고 생각했다  검색하니 모든게 틀렸다 ㅋㅋ   나의 문제점* 얕은 복사, call by reference 등의 개념을 다 !제대로 몰랐다1. 얕은 복사와 깊은 복사의 의미부재2. 얕은 복사(shallow Copy..