본문 바로가기
반응형

Flutter122

#2 The Three Trees (세 가지 트리 구조) https://ch5c.tistory.com/147 [한국어 번역] How Flutter Works: The Three Trees #DecodingFlutter (2/6)https://www.youtube.com/watch?v=xiW3ahr4CRU.인트로 (Intro)0:00CRAIG LABENZ:“How Flutter Works” 에피소드 2에 다시 오신 것을 환영합니다.0:10이전 에피소드에서 저는 Flutter가 주로 세 가지 서로 다른 트리 구조에ch5c.tistory.com위젯이란 무엇인가플러터는 선언형 API를 제공하는데 각각의 위젯은 불변(immutable)이며 일회용(disposable) 임.즉, UI의 해당 부분이 변경될 필요가 있을 때마다 위젯은 버려지고 새로 생성되게 된다는 것인데 .. 2026. 1. 17.
[한국어 번역] How Flutter Works: The Three Trees #DecodingFlutter (2/6) https://www.youtube.com/watch?v=xiW3ahr4CRU.인트로 (Intro)0:00CRAIG LABENZ:“How Flutter Works” 에피소드 2에 다시 오신 것을 환영합니다.0:10이전 에피소드에서 저는 Flutter가 주로 세 가지 서로 다른 트리 구조에 의해 동작한다고 살짝 언급했습니다.0:13하나는 우리가 Flutter 개발자로서 직접 작성하는 위젯(widget)으로 가득 찬 트리,0:17하나는 우리가 거의 직접 작성하지는 않지만 항상 상호작용하게 되는 엘리먼트(element)로 가득 찬 트리,0:21그리고 마지막 하나는 가끔씩 직접 작성하기도 하는 렌더 오브젝트(render object)로 이루어진 트리입니다.0:30위젯이 가장 눈에 띄는 개념이므로, 먼저 위젯부터.. 2026. 1. 17.
#1 Architecture (아키텍처) https://ch5c.tistory.com/145 [한국어 번역] How Flutter Works: Architecture #DecodingFlutter (1/6)https://www.youtube.com/watch?v=0Xn1QhNtPkQ&t=2s소개 (Introduction)0:00CRAIG LABENZ:“How Flutter Works”의 첫 번째 에피소드에 오신 것을 환영합니다.이 시리즈는 총 6부작으로, 여러분이 작성한 Dart 코드가 Flutter라ch5c.tistory.comFlutter란 무엇인가Flutter는 선언형(declarative)이며 멀티 플랫폼을 지원하는 UI 프레임워크라고 설명하고 있는데 여기서 선언형이라는 것이 무엇일까? 선언형에 대해서 아래와 같이 설명하고 있다. 여러.. 2026. 1. 14.
[한국어 번역] How Flutter Works: Architecture #DecodingFlutter (1/6) https://www.youtube.com/watch?v=0Xn1QhNtPkQ&t=2s소개 (Introduction)0:00CRAIG LABENZ:“How Flutter Works”의 첫 번째 에피소드에 오신 것을 환영합니다.이 시리즈는 총 6부작으로, 여러분이 작성한 Dart 코드가 Flutter라는 방대한 세계 속으로 배포된 이후 어떤 일이 벌어지는지를 탐구합니다.0:11이 에피소드들을 통해 다루는 정보는 가볍게 흥미로운 내용부터 모든 Flutter 개발자에게 꼭 필요한 핵심 지식까지 다양할 것입니다.0:18하지만 분명히 해두자면, 이 모든 내용은 Flutter 앱을 어떻게 작성하는지가 아니라, Flutter 자체가 어떻게 동작하는지에 관한 것입니다.🎵 (밝은 음악)0:32오늘은 Flutter의 아.. 2026. 1. 14.
Clock_App / 타임 라벨 컴포넌트화 시키 일단 가장 먼저 타이머 화면을 만들기로 했다.그 타이머 화면에서도 첫 번째로 만들어야 할 것을 뽑아 보자면 제일 만만하고 위치 상으로도 첫 번째인 시간, 분, 초 텍스특가 되겠다.만들어주기 위해서 피그마에서 만들었던 것처럼 먼저 큰 틀을 잡고 그 안에 삽입해 주는 형식으로 해주었다.@overrideWidget build(BuildContext context) { return BaseScaffold( appBar: BaseAppBar( onTap: () {}, ), body: , // TODO );}현재 내 Timer 스크린의 코드는 위와 같은데 여기서 스택으로 바디를 먹여주고 그 스택 안에서 박스를 배치해 주겠다.@overrideWidget build(BuildContext .. 2025. 12. 11.
Clock_App / 공통 도구(Utils) 제작 사이즈를 먹여주다가 MediaQuery.sizeOf(context).width를 사용하게 되었다. 근데 생각해 보니 이거를 사용할 때마다 계속 호출해야 하면 굉장히 비효율적인 것 같아 Utils디렉토리를 하나 만들고 거기다가 사이즈 관련 코드를 넣어 놓기로 하였다.Utils디렉토리를 만들고 그 아래에다가 파일을 만들어 주었다. 파일 이름은 사이즈와 관련된 도구(코드)들을 넣어 놓을 것이라 screen_size.dart로 지어줬다.안에서는 화면의 너비와 높이를 지정해 주었다.import 'package:flutter/material.dart';class ScreenSize { static double width(context) => MediaQuery.sizeOf(context).width; stati.. 2025. 12. 10.
Clock_App / 폰트 삽입 생각해 보니 프로젝트를 만들 때 했어야 했던 것을 안 했던 것 같다.지금 내 Figma에서 넣은 텍스트는 모두 inter폰트로 구성되어 있는데 현재 내 프로젝트 파일에는 들어가있지 않다.https://fonts.google.com/specimen/Inter?query=inter Inter - Google FontsInter is a variable font family carefully crafted & designed for computer screens. Inter features a tall x-height to aid in readability of mixed-case and lower-fonts.google.com우선 구글 폰트에 들어가서 inter를 다운로드 받아주었다.그런 후 이제 이 다운로.. 2025. 12. 5.
Clock_App / 공통 UI 제작하기 각 화면들이 공통적으로 가지고 있는 요소가 무엇이 있을까? 기본적으론 배경색, 내비게이션 바를 꼽을 수 있을 것이다.근데 여기에서 이제 내비게이션 바는 제작을 완료했으니 배경색을 다 적용해 주면 된다.허나 화면 하나하나 마다 배경색을 일일이 적용시키는 것은 상당히 비효율 적일 것이다. 그러므로 공통적으로 사용하는 기능이나 레이아웃을 묶어둔 기본 뼈대 클래스를 제작해 줄 것이다. 맨 처음 프로젝트 구조화를 했을 때 트리를 아래와 같이 만들어 놨었다.lib/ ├─ constant/ ├─ controllers/ ├─ screens/ │ ├─ components/ │ ├─ widgets/ └─ main.dart 여기에서 이제 widgets/안에 파일을 만들면 된다.Flutter에서 화면의 배.. 2025. 10. 24.
Clock_App / 색상 정의하기 사실 이전 글에서 했어야 했는데 깜빡하고 넘어가 버렸다. 디자인을 하려면 가장 필수로 있어야 하는 것이 당연지사 하게도 색, 컬러일 것이다.Flutter 내부에서 컬러를 어떻게 사용하는지 생각해 보자.그렇다 Color 위젯을 사용하여 16 진수 색상 코드로 Color(0xFF121212) 이런 식으로 색을 정의하거나 혹은 Colors.black 이런 식으로 색을 가져오게 될 것이다. 그렇다면 내가 고른 색을 사용하려면 내 프로젝트 내부에서 모든 컬러를 사용하는 부분에서 16진수로 길게 표현해야 할까? 답은 당연하게도 NO다. Flutter에서는 다른 언어들과 마찬가지로 어떠한 컬러를 선언한 후에 그것을 상수로써 사용할 수 있다.그럼 그 컬러 상수들을 어떤 파일에다 놓을까?이미 내가 만들어 놓았다. 맨 처.. 2025. 10. 24.
Clock_App / bottomNavigationBar에TabBar를 사용하기 원래 디자인을 끝낸 다음에 개발에 착수하는 것이 맞지만 그냥 개발하고 싶을 때 개발하고 디자인하고 싶을 때 디자인 할 것이기 때문에 Figma에서 만든 탭바를 구현해 줄 것이다.이것들을 구현해 줄 것이다. 파일 이름은 MainTab으로 할 것인데 탭 동작을 관리하는 파일이므로 이렇게 명명해 줬다.원래 이제 바텀 내비게이션으로 구현할 땐 Scaffold의 body 파라미터에는 IndexedStack같은 위젯을 배치시켜 스크린들을 관리시키고 bottomnavigationBar같은 파라미터에는 BottomnavigationBar 같은 위젯을 배치시켜 만들게 될 것이다.또 IndexedStack과 BottomnavigationBar 위젯을 사용하기 때문에 인덱스를 관리할 currentIndex와 같은 인스턴스.. 2025. 10. 8.
Clock_App / 프로젝트 구조화 프로젝트를 생성해서 가장 먼저 해야 하는 일이 무엇일까? 나는 무엇보다 구조화를 먼저 하는 것 같다.그리고 그 구조화한 트리는 아래와 같다. lib/ ├─ constant/ ├─ controllers/ ├─ screens/ │ ├─ components/ │ ├─ widgets/ └─ main.dart 가장 먼저 색깔 같은 상수를 넣은 파일들이 위치될 constant 폴더, UI 부분을 표시할 screens 폴더, 그리고 UI 부분을 제어하는 역할을 해줄 controllers 폴더, 그 외에 UI에서 사용될 components와 widgets 폴더. 이렇게 보통 만들어 놓는 것 같다.widgets/은 재사용성이 높고, 앱 어디서나 쓸 수 있는 공통 UI 위젯들을 모아두는 폴더이고, compon.. 2025. 10. 7.
Flutter[플러터] / flutter_slidable 패키지 사용법 (스와이프, 슬라이더, ListTile, 리스트 타일, Dismissible, SlidableAction) flutter_slidable (Flutter Widget of the Week) package:flutter_slidable방향성 있는 슬라이드 동작과 해제가 가능한 슬라이드 목록 항목에 대한 Flutter 구현입니다.https://youtu.be/QFcFEpFmNJ8 리스트 타일이 나열되어 있고 그중에서 자신이 원하는 아이템을 선택하고 그 화면에서 그 아이템에 대한 어떠한 동작을 결정하게 하려면 어떠한 방식이 가장 좋을까? 가장 좋은 방식 중 하나로는 그 아이템을 드래그, 슬라이드 동작을 진행하여 몇 가지 작업을 보여주는 것일 것이다. 이러한 동작을 쉽게 구현할 수 있게 도와주는 위젯이 바로 이번에 알아볼 package:flutter_slidable이다.이 flutter_slidable 패키지는 슬라이드 가능한 리스트 항목(Slidable list items)을 만들기 위한 매우 .. 2025. 8. 14.
Flutter[플러터] / animations 패키지 사용법 (화면 전환 효과, 애니메이션, 페이드, OpenContainer, SharedAxisTransition, FadeThroughTransition) animations (Flutter Widget of the Week) package:animations이 패키지에는 일반적으로 원하는 효과를 위한 미리 제작된 애니메이션이 포함되어 있습니다.https://youtu.be/HHzAJdlEj1c앱에서 다른 화면으로 넘어갈 때 우리는 어떠한 전환 효과를 넣어 주는가? Hero 위젯을 사용하여 특정한 위젯을 이동시키는 느낌을 줄 수도 있고 혹은 라우터 동작하는 부분을 FadeTransition으로 감싸서 페이드 효과를 먹여줄 수도 있을 것이다. 하지만 이러한 위젯들을 사용하여 만든 전환 효과는 너무 뻔하고 재미가 없는 경우가 대부분이다. 하지만 이 package:animations를 사용하면 Material motion 기반의 고급 전환 효과를 손쉽게 사용할 수 있다. 일단 사용하기 위해선 먼저 프로젝트의 pubspec.y.. 2025. 7. 22.
Flutter[플러터] / PhysicalModel을 사용하여 간단하게 위젯에 그림자 추가하기 (쉐도우, BoxShadow, elevation, 고도, 계층, 입체감) PhysicalModel (Flutter Widget of the Week) PhysicalModel class자식 요소를 모양에 고정하는 물리적 계층을 나타내는 위젯입니다.https://youtu.be/XgUOSS30OQk예제 코드 우리가 UI를 구성할 때 위젯에 입체감을 줘야 하는 일이 생길 수 있다. 이런 입체감을 가장 쉽게 주는 방법 중 하나는 그림자(DropShadow)를 주는 것인데 이러한 그림자를 쉽게 줄 수 있도록 도와주는 위젯이 바로 PhysicalModel 위젯이다.이 PhysicalModel 위젯은 시각적으로 그림자와 입체감을 주기 위해 사용하는 위젯이다. Material 위젯처럼 elevation, shape, color 그리고 clip behavior 등의 속성을 활용할 수 있지만, PhysicalModel은 더 낮은 수준에서 물리적인 형태를 직접 제어할 .. 2025. 7. 21.
Flutter[플러터] / ImageFiltered를 사용하여 이미지에 효과 및 필터 적용 시키기 (BackdropFillter, 흐리게, 블러, 모자이크 처리, 변형, ImageFilter) ImageFiltered (Flutter Widget of the Week) ImageFiltered class자식에 ImageFilter를 적용합니다.이미지 필터는 항상 자식 위젯에 필터 연산을 적용합니다. 이는 해당 필터가 개념적으로 "no-op"인 경우(예: 반경이 0인 ImageFilter.blur 또는 단위행렬을 갖는 ImageFilter.matrix)에도 마찬가지입니다. ImageFiltered.enabled를 로 설정하면 false이미지 필터를 비활성화하는 데 더 효율적입니다.https://youtu.be/7Lftorq4i2o 공식 문서 코드 우리가 이미지를 사용할 때 그 이미지에 블러를 먹여 모자이크 처리를 하고나 다른 효과를 줘야 할 때가 있다. 이럴 때 어떻게 해야 할까? 뭐 다른 디자인 프로그램에서 이미지에 효과를 다 줄다음 그것을 사용해도 되겠지만 여기 I.. 2025. 7. 20.
반응형