일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jetpack compose
- Coroutine
- 벤자민플랭클린
- 코틀린
- 명심보감
- 장자명언
- 소울칼리버6
- 파이썬
- bash
- Flutter
- DART
- recyclerview
- 명언모음
- 공자명언
- ASMR
- Android
- Streaming
- 좋은글필사하기
- Linux
- 이모지메모
- Firebase
- androidx
- Freesound
- 이모지
- kotlin
- 1인개발자
- FSM
- 오픈소스
- 넷플릭스
- 공부집중
- Today
- Total
목록Source code or Tip/Flutter & Dart (82)
Vintage appMaker의 Tech Blog
GitHub - VintageAppMaker/githubblog Contribute to VintageAppMaker/githubblog development by creating an account on GitHub. github.com
의외로 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이나 상태관리자는 간단한 조건처리에서는 사용하지 않는..
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과 ..