[Flutter] 왜 copyWith()를 사용할까?
Flutter로 개발을 하다보면 copyWith()란 메소드를 사용하거나 마주칠 일이 자주 있다. TextStyle, Theme 등 다양한 클래스에서 copyWith() 를 제공하고 있다.
Flutter로 개발을 하다보면 copyWith()란 메소드를 사용하거나 마주칠 일이 자주 있다. TextStyle, Theme 등 다양한 클래스에서 copyWith() 를 제공하고 있다.
void main() { WidgetsFlutterBinding.ensureInitialized(); runApp(MyApp()); }
Flutter 버전을 변경하는 방법에는 flutter 명령어를 사용하는 방법이 있고, 이에 해당하는 명령어는 다음과 같다.
Xcode 업데이트 하는 건 정말 귀찮고 짜증난다. Xcode를 사용해본 사람이라면 공감할 것이다. 이번에 14 버전이 나오고 업데이트를 미뤘지만, 이제는 해야할 것 같아서 어제 업데이트를 했다.
Decoding Flutter 유튜브 영상
요새 회사에서 개발하고 있는 앱에는 커스텀 토스트 메세지가 자주 사용된다. 그런데 토스트 메세지를 사용할 때 문제가 생겼다.
overscroll 효과란?
Flutter에서는 Dart 코드를 통해 한번에 ios와 안드로이드의 화면 방향을 고정할 수 있다. 이전에 이에 대한 글을 작성한 적도 있다.
Decoding Flutter 유튜브 영상
Extension Method란?
개발을 하다 다음과 같은 에러가 발생했다.
Decoding Flutter 유튜브 영상
Flutter에서 공간을 할당해줄 때, 내부 컨텐츠의 길이와 크기에 따라서 의도하지 않은 UI를 보여줄 때가 있다. 글로 설명하는 게 어려우니 예시를 통해 확인해보자.
이전에 precacheImage()를 통해 이미지 파일의 로딩 시간을 줄이는 법(https://terry1213.github.io/flutter/flutter-precacheimage/)을 정리했었다. 다른 이미지 파일들은 해당 방법으로 캐시에 저장할 수 있지만, svg 파일에는 ...
어플의 용도와 목적에 따라 화면의 방향을 제한시켜야하는 경우가 있다. 그렇다면 Flutter에서 이를 구현하는 방법을 한번 알아보자.
Decoding Flutter 유튜브 영상
Decoding Flutter 유튜브 영상
Flutter에서 대부분의 위젯들은 쉽게 높이를 설정할 수 있다. SizedBox나 Container으로 위젯을 감싸고, height를 설정해주면 된다.
네트워크 이미지를 가져와서 화면에 보여줘야하는 경우가 많다. 이때 placeholder를 따로 설정해주고, cached_network_image 패키지를 사용하여 캐시를 사용하면 대부분은 문제가 없다.
중첩 네비게이션(Nested Navigation)은 같은 앱 내에서 하나 이상의 네비게이터를 중첩하여 사용하는 것이다. 오늘은 중첩 네비게이션이 어떤 경우에 필요한지, 그리고 어떻게 구현하는지를 알아보자.
Flutter가 2.5 버전이 나온지도 2달이 지났다. 매일 업데이트 노트를 읽어보자 생각만 하고 미루다가 드디어 다 읽었다. 정말 다양한 부분에서 여러 개선 사항들이 있었다.
Performance: iOS shader warmup, async tasks, GC & message passing
Scaffold에 배경 이미지를 추가하는 방법을 알아보자. Scaffold는 배경 이미지를 위한 property가 제공되지 않기 때문에 직접 구현해야한다. assets 디렉토리에 이미지 파일 추가
스테이터스 바를 보면 시간이나 배터리 등을 표현하는 색깔이 흰 색일 때도 있고 검정색일 때도 있다. Flutter에서도 스테이터스 바의 색을 변경할 수 있는 방법이 여러 개가 있으며, 상황에 따라 맞게 사용해야한다.
Decoding Flutter 유튜브 영상
한 화면에 담아야할 정보가 너무 많아져서 스크롤이 길어질 때가 있다. 이때 사용자가 매번 화면 드래그를 통해 스크롤을 이동시켜야하면 매우 불편하다. 따라서 특정 위젯의 위치로 스크롤을 이동시키는 기능이 필요하다.
다음은 ScaffoldMessenger를 통해 showSnackBar()를 호출하는 코드이다.
Decoding Flutter 유튜브 영상
오늘 특정 프로젝트의 패키지를 최신 버전으로 변경하는 작업을 진행했다. 버전 변경 중 특정 패키지의 디펜던시 문제 때문에 Flutter를 최신 버전으로 업그레이드했다.
최근 Flutter Web 작업을 다수 맡아서 진행하게 되었다. 하다보니 재미있어서 따로 공부를 시작했고, 간단하게 포트폴리오를 Flutter Web으로 만들어 봤다.
Widget of the Week 유튜브 영상
IconButton 위젯를 나란히 배치해야할 때가 있다. 다음과 같은 코드가 있다고 생각해보자.
Decoding Flutter 유튜브 영상
안드로이드 스튜디오를 Arctic Fox 버전으로 업데이트했다. 업데이트 후 iOS 시물레이터에선 Flutter 어플이 정상적으로 돌아갔지만, Android 에뮬레이터에서 실행하려고 하니 빌드 자체가 되질 않았다.
Decoding Flutter 유튜브 영상
Decoding Flutter 유튜브 영상
Flutter를 통해 Web 개발을 하다가 문득 드래그를 통해서 스크롤이 가능한 게 불편하게 느껴졌다. 모바일 환경에서는 당연히 드래그를 통해 스크롤하지만 일반적인 Web 환경에서는 마우스 휠로만 스크롤한다.
기존 어플에 새로운 기능을 추가하고 나서 잘 돌아가는지 확인하는 작업을 진행하고 있었다. 안드로이드 에뮬레이터를 키고 어플을 실행하는데 갑자기 다음과 같은 에러가 발생했다.
Flutter에선 Divider 위젯을 기본적으로 제공한다. 대부분의 경우에는 Divider 위젯을 사용하면 된다.
Widget of the Week 유튜브 영상
Decoding Flutter 유튜브 영상
Decoding Flutter 유튜브 영상
Flutter 공식 문서 원본 이동
Decoding Flutter 유튜브 영상
Decoding Flutter 유튜브 영상
Widget of the Week 유튜브 영상
최근 주변에 상태 관리 툴로 GetX를 사용하는 사람들이 많아지고 있다. ‘나도 GetX를 한번 사용해볼까’하는 생각도 들었지만, Provider를 배운지도 얼마 되지 않아서 익숙해지고 있는 중이라 나중에 사용해보기로 마음먹었다.
요즘 플러터로 웹 개발을 해야할 일이 생겼다. 네비게이션(페이지) 작업을 하다가 우연히 url이 눈에 들어왔다.
Flutter를 통해 개발을 진행하다보면 상태(State) 관리가 매우 중요하다는 것을 느낄 수 있다.
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
Widget of the Week 유튜브 영상
아침에 작업을 하려고 Flutter를 켰는데 아래와 같은 에러가 떴다. 어떤 명령어를 입력해도 해당 에러만 떠서 너무 당황했다...
Widget of the Week 유튜브 영상
Column 안에 Listview를 사용하다보니 다음과 같은 에러가 발생했다 .
Flutter 채널을 변경하던 중에 갑자기 아래와 같은 에러가 발생해서 당황했던 적이 있다. 이는 Flutter 에러가 아니라 git 에러이다.
Flutter 채널을 변경하던 중에 갑자기 아래와 같은 에러가 발생해서 고생을 했다.
상황에 따라 변화하는 위젯(Stateful Widget)을 제어하기 위해 setState()을 사용하곤 한다. 이때 종종 아래와 같은 에러가 발생할 때가 있다.
Firebase Analytics이란?
2021.06.21 업데이트: Flutter가 버전 2가 정식적으로 릴리즈하면서 해당 문제는 해결되었다.
Flutter를 통해 개발하다보면 현재까지 개발한 어플이 어떻게 돌아갈지 궁금할 때가 있다. 그럴 때마다 어플을 빌드하고 시뮬레이터를 통해 돌려봐야한다. 그런데 가끔 빌드 과정에서 다음과 같은 에러가 뜰 때가 있다.
Flutter에선 괄호 뒤에 자동으로 주석을 달아주는 편리한 기능을 제공한다. 덕분에 코드의 구조를 더 쉽게 파악할 수 있다. 그런데 사용하다가 보면 해당 기능이 꺼져있어서 다시 키고 싶을 수 있다. 혹은 반대로 주석 때문에 난잡하다고 생각해서 해당 기능을 끄고 싶을 때가 있다.
열심히 프로그래밍을 하다보면 간혹 분명 내가 짠 코드인데 알아보기가 어려울 때가 있다. 코드를 짤 때 identation을 완벽하게 한다면 괜찮겠지만 사실 완벽하게 하기는 어렵다. 이는 Flutter에서도 마찬가지이다.
오늘은 Dart의 enum에 대해 정리를 해보려고 한다. Dart 2.17 버전이 나오기 전까지는 enum의 사용성이 좋지 않았다. 하지만 2.17 버전부터는 enum의 확장성이 class처럼 꽤 좋아졌다.
상속이란 기존에 존재하는 클래스(슈퍼 클래스)를 재사용하거나 확장하는 새로운 클래스를 만드는 것을 말한다. 이러한 상속은 당연히 객체지향 언어인 Dart에도 존재한다.
mixin, with란 무엇일까?
Dart 공식 문서 원본 이동
목차로 돌아가기 Classes Dart는 클래스와 혼합 기반 상속(Mixin-Based Inheritance)을 포함하는 객체 지향 언어(Object-Oriented Language)이다. 모든 오브젝트는 클래스의 인스턴스이고, 모든 클래스는 Object(모든 Dart 오브젝트의 ...
Dart 공식 문서 원본 이동 Effective Dart: Documentation
목차로 돌아가기 Exceptions Dart에서 exception을 throw 하고 catch할 수 있다. exception은 개발자가 기대하지 않는 일이 일어났다는 것을 알려주는 에러이다. 만약에 exception이 잡히지 않으면 exception을 발생시킨 isolate가 중단...
목차로 돌아가기 Control flow statements 아래의 것들을 사용해서 Dart 코드의 흐름을 제어할 수 있다.
목차로 돌아가기 Operators
목차로 돌아가기 Functions
목차로 돌아가기 Built-in types 다트 언어는 다음 타입들에 대해 특별한 지원을 해준다.
목차로 돌아가기 Variables 아래는 variable을 생성하고 initialize 하는 예시이다.
목차로 돌아가기 Keywords
목차로 돌아가기 Important concepts Dart 언어를 배울 때 아래의 항목들을 명심해야한다.
Dart 공식 Docs의 A tour of the Dart language에 대해서 정리해보자.
목차로 돌아가기 A basic Dart program
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
다이나믹 프로그래밍(Dynamic programming)을 사용한 풀이 보기
조합(Combination)을 사용한 풀이 보기 문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
문제 설명
Xcode 업데이트 하는 건 정말 귀찮고 짜증난다. Xcode를 사용해본 사람이라면 공감할 것이다. 이번에 14 버전이 나오고 업데이트를 미뤘지만, 이제는 해야할 것 같아서 어제 업데이트를 했다.
Xcode 빌드 중에 아래와 같은 에러가 발생했다.
Xcode 빌드 중에 아래와 같은 경고가 발생했다.
가끔 어르신들 핸드폰을 보면 텍스트가 필자의 핸드폰의 텍스트보다 훨씬 클 때가 있다. 텍스트 크기를 설정 기능을 제공하고 있기 때문에 유저는 이를 사용해 텍스트 크기를 자유롭게 변경할 수 있다. 아이폰도 마찬가지이다. 필자의 아버지도 아이폰을 사용하시는데 텍스트 크기를 많이 크게 ...
UILabel 생성 방법
새 프로젝트 생성 방법
열심히 프로그래밍을 하다보면 간혹 분명 내가 짠 코드인데 알아보기가 어려울 때가 있다. 코드를 짤 때 identation을 완벽하게 한다면 괜찮겠지만 사실 완벽하게 하기는 어렵다. 이는 Xcode에서도 마찬가지이다. 그럴 때 필요한 게 코드를 재정렬해주는 기능이다.
새로운 폴더 생성하는 방법이 게시글로 작성할 만한 주제인가 싶기도 하다. 그런데 Android Studio에서 새로운 폴더를 생성하는 방법이 조금 특이하다.
안드로이드 스튜디오를 Arctic Fox 버전으로 업데이트했다. 업데이트를 잘 마치고 작업하던 중, 갑자기 단축키가 되지 않는 문제가 발생했다.
Android Studio를 통해 개발할 때 변수나 함수의 이름을 변경해야할 때가 있다. 그런데 만약 이름을 변경하려는 변수나 함수가 너무 많은 파일에서 사용되었다면 이를 하나씩 전부 찾아서 변경하는 건 불가능하다. 이런 경우에 전체 변경(Replace All) 기능을 사용하면 된...
현재 파일 내에서의 검색은 워낙 많은 곳에서 사용하기 때문에 대부분 알 것이다. 그런데 파일 내에서만 검색할 일만 생기지는 않다. 프로젝트 전체 검색이 필요할 때가 굉장히 많았는데 일일이 찾다가 지쳐버렸다. (지금 생각해보면 굉장히 미련한 짓이었다. 다음부터는 미리 찾자...)
개발을 하다보면 import 해야할 것들이 점점 많아진다. 그리고 한번 import 했다가도 사용하지 않게 될 때도 있다.
블로그에 글을 올리다 보니 몇몇 사진의 경우 확대해서 볼 수 있으면 좋겠다고 생각했다. 링크를 사용해서 간편하게 구현할 수 있지만 보는 입장에선 불편할 것 같았다. 그래서 다른 url로 이동하지 않고 게시글 내에서 확대할 수 있게 하는 방법을 찾다보니 Magnific Popup라는...
블로그 글을 쓰다보니까 글 쓰는 재주와 능력이 없어서 그런지 자꾸 글이 지저분해진다. 그래서 더 깔끔하게 보일 수 있는 방법이 없을까 고민하다가 <details> 태그를 사용해 글을 펼쳤다 접을 수 있게 해두면 조금은 괜찮아지지 않을까 생각했다.(나의 글 쓰는 능력 자체...
블로그를 작성할 때 자주 사용하는 것이 Rouge이다. Rouge를 통해 다양한 언어의 코드를 보기 좋게 하이라이트(highlight) 할 수 있기 때문이다. 그런데 내가 지금까지 블로그에 사용했던 언어 종류만 봐도 C, JavaScript, Swift, Dart, Shell 5가...
블로그에 게시글을 쓰다 보면 외부 사이트에 대해서 링크를 달아야할 경우가 종종 있다. 실시간으로 내용이 수정되는 소스의 경우와, 타인이 직접 정성들여 정리한 소스의 경우가 그렇다. 이런 경우에는 해당 소스를 본인의 블로그에 직접 복사해서 쓸 순 없다.
아파치 톰캣 서버에서 포트를 변경하는 방법에 대해서 정리해보고자 한다.
이번에는 MySQL 비밀번호 변경 방법에 대해서 정리해보자.
1. 헤더 [보여질 이름]: (주소, “추가 설명. 필수X”) [Google]: http://google.com “구글로 이동” [Google]: http://google.com “구글로 이동”
객체 지향 프로그래밍에서 기본이 되는 5가지 원칙이 있다. 각 원칙의 앞자를 따와서 SOLID 원칙이라고 부르는 이 원칙은 프로그램의 유지보수성, 확장성, 재사용성을 향상시키기 위해 만들어졌다.