일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1인개발자
- Flutter
- ASMR
- FSM
- Firebase
- 소울칼리버6
- jetpack compose
- kotlin
- 명심보감
- 명언모음
- 코틀린
- 공부집중
- 벤자민플랭클린
- Linux
- Android
- bash
- 이모지메모
- Coroutine
- Freesound
- 장자명언
- 오픈소스
- 넷플릭스
- 공자명언
- 파이썬
- Streaming
- 이모지
- recyclerview
- DART
- androidx
- 좋은글필사하기
- Today
- Total
목록분류 전체보기 (528)
Vintage appMaker의 Tech Blog
의외로 BottomNavigation을 쓰다보면 손이 가는 경우가 많이 발생한다. 주로, 1. 하단메뉴를 눌렀을 때, 상태에 따라 다른 반응을 보여주기(지금 화면에서 보여주고 있는가? 처음누르는가?, ...) 2. 메인화면 액션을 취하면, 하단메뉴의 상태가 변하며 이동하기(화면이동 후, 위젯의 메소드 실행 등등..) 인데, 구글링을 해도 속시원한 해결방법이 없었다. 그래서 Provider에 각 위젯의 메소드를 함수형태로 보관하여 call하는 방식을 취했다. 다음은 전체소스이다. [전체소스] import "package:flutter/material.dart"; import "package:flutter/widgets.dart"; import "package:provider/provider.dart"; v..
일반적으로 대부분의 프로그래밍 언어에서는 if else 문이 길어지면 최소화하는 방법을 고민하게 된다. 고전적인 방법으로는 함수테이블을 만들어 상태에 따라 호출하는 방식을 사용하는데 FSM(Finate State Machine)이라고 불리기도 했다. FSM은 하드웨어의 논리구조처럼 상태표로 관리하는 방법인데 조건-상태-함수를 데이터화 하여 함수를 호출하는 방법이다. 요즘의 언어들(파이썬, 코틀린, 스위프트, ..)은 비교분기 기능이 함수형 프로그래밍과 어울리게 유연하고 편리하게 제공되고 있는 반면 dart는 기능이 약한 편이다. 그래서 고전적인 방법(C like)으로 1. 조건함수 테이블 만들기 2. 상태관리자로 함수처리하기 를 구현했다. (*) FSM이나 상태관리자는 간단한 조건처리에서는 사용하지 않는..
앱개발을 하면서 화면의 문자열을 길이, 한영, 숫자 등등을 채크해야 하는 경우가 많이 발생한다. 그럴 경우, 똑같은 로직의 코드를 변수명만 달리하여 copy & paste 수준으로 활용할 때가 많다. 이렇게 하다보면 나중에 귀찮은 일이 발생한다. if 문이 너무 남발된다. 그러다보니 android에서는 validation 관련 annotation을 제공하는 모듈들이 많이 제공된다. kotlin poet을 이용하여 비슷한 유형의 source를 만들어주기도 한다. 그러나 그것도 가끔은 귀찮아 질 때가 있다. - 비교문을 모듈화 하고 - 부분적인 오류있으면 callback으로 호출 - 전체 validation 후, 결과값 리턴 을 하기위해 아래와 같은 간단한 소스를 구현했다. 앱에서 사용자 가입정보같이 다양한..
dart에서는 kotlin과 같이 null safety를 위한 내장된 확장함수인 let(), apply() 같은 함수가 존재하지 않는다. 그렇다고 null safety를 채크하는 방법이 없는 것은 아니다. 코틀린의 ?:(엘비스플레슬리 연산자)와 같은 기능으로 ??와 같은 연산자가 제공된다. 그러나 코틀린에 익숙한 개발자라면 apply()와 let()의 편리함을 dart에서 느끼지 못해 스트레스를 받을 떄가 있다. 그럴 경우, let(), apply()를 확장함수를 통해 만들어 사용하면 된다. 의외로 간단하게 처리 가능하다. extension ObjectExt on T { R let(R Function(T that) fn) => fn(this); // let으로도 apply 기능이 되지만, kotlin과 ..