전체보기

·Flutter
플러터를 하다보면 가장 많이 보는 안내창이 바로 위젯에 const 키워드를 넣으라는 문구일 것이다. 그렇다면 왜 IDE에서 제발 const를 넣으라고 울부짖는걸까?  Flutter 위젯에 const를 붙여야하는 이유는 바로 메모리 최적화 때문이다. const없이 위젯을 선언하게 되면 새로운 중복된 위젯 메모리공간을 사용하게 되기 때문이다.  단순히 메모리 최적화뿐만 아니라원하는 위젯 메모리를 바라보게 해야할 때 위젯이 중복되버리면 어느 위젯 메모리를 포인팅해주어야하는지 상당히 난감해지므로 왠만하면 위젯 앞에 const를 붙이자. 주의할점으로는 위젯 앞에 const를 붙인다는 것 자체가 해당 위젯은 변하지 않는다는 것을 선언하는 것이다. const 자체가 컴파일 상수임을 의미하기 때문이다. Stateful..
·Flutter
flutter localization 작업중 localizations 2.1.1 패키지가 들어가지 않는 오류가 있었다. 터미널을 천천히 읽어보니 Flutter Localization은 intl에 의존성이 걸려있었다. localization 패키지는 intl 패키지의 예전버전을 쓰고 있고 내 프로젝트에서는 가장 최신버전을 쓰고 있어서 Flutter Localization 내에서 intl 버전 업데이트가 되지 않아 생긴 에러같았다. 해결하는 방법은 간단했다. 먼저 의존성이 걸린 intl의 버전을 any로 선언한 뒤에 flutter update-packages --force-upgrade명령어로 넣은뒤 flutter pub get을 입력하면 알맞은 버전으로 업데이트 된다 ^^https://stackoverfl..
·Flutter
Sliver 개념 이해Sliver를 이해하기 앞서 RenderBox를 먼저 알아야한다. RenderBox는 2D 데카르트 좌표계를 가진 렌더 객체로 Flutter 레이아웃 구성요소의 대부분은 RenderBox로 구현된다. Renderbox는 부모 위젯의 제약조건 내에서 구현되는 너비높이이기 때문에 동적인 상호작용이나 스크롤에 대처하기 힘들다. (이미 높이 너비가 부모 제약에 의해 정해져있음) 이러한 동적인 상호작용에 대응하기 위해 Flutter 팀은 Sliver를 만들었다. Sliver 를 통해 기존의 부모위젯 제약조건을 활용하는 대신 Sliver Protocol 에서 제공되는 다양한 제약조건을 활용했다. 특히  RenderBox에서 구현하기 어려웠던 스크롤 효과를 구현하는데 용이하다. (GridView..
·Flutter
Flutter 프로그래밍을 하면서 Swift의 Result 타입과 대응하는 개념이 있을까? 를 찾아보던 도중 우연히 마주친 좋은 세션을 정리해보고자 한다.if-else 의 문제점 에러를 가장 단순하게 처리한다면 위와 같이 연속적인 if-else문으로 처리할 수 있을 것이다. 하지만 이러한 방식의 문제점은 에러 발생 컨텍스트를 풍부하게 표현하기 어렵다는 것이다. 가장 먼저 오는 조건과 가장 아래 오는 조건이 부분집합 관계이기 때문이다. Exception - 에러에 풍부한 의미 부여하기 if-else문의 문제를 해결하기 위해 try-catch를 이용해 에러를 처리해줄 수 있다. 위와 같이 try-catch문을 사용하면 정상적인 로직과 에러 처리 로직을 명확히 분리하여 코드를 간결하게 유지 할 수 있다. 하지..
운영체제란?운영체제란 컴퓨터 하드웨어 바로위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 계층이다. 컴퓨터 하드웨어를 직접적으로 다루면 매우 어렵고 복잡하기 때문에 운영체제라는 중간다리를 만듦으로서 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다. 또한 운영체제는 실행중인 프로그램을 메모리 공간에 적절히 분배함으로서 컴퓨터 시스템의 자원을 효율적으로 관리한다. 엄밀히 따지자면 좁은 의미의 운영체제는 "커널"이라 부르며 항상 메모리에 상주하는 부분을 의미한다. 넓은 의미의 운영체제는 커널 뿐 아니라 메모리 상주하지 않는 주변 유틸리티 시스템을 포함하는 개념이다. 운영체제는 동시작업 가능 여부로도 분류할 수 있다. 한 번에 하나의 작업만 처리하는 MS-DOS와 같은 운영체제와 동시에 ..
·Flutter
단순히 데이터를 읽어오는 앱이 아니라면 앱배포에 필수적인 작업이 바로 디버그용/배포용 분리이다. (왠만하면 이 작업은 프로젝트 초반에 셋팅을 해주는 것이 정신건강에 이롭다). 과정을 3줄 요약하자면 iOS 에서는 Scheme에 접근해서 나누어 줄 수 있고, AOS는 Gradle 파일을 수정해서 분리해줄 수 있다. 마지막으로 플러터 프로젝트안에서 디버그용/배포용 파일을 따로 만들어 시작점을 분리시킨다. 구체적인 진행방법은 아래와 같다. 1. iOS 디버그용/배포용 분리 1-1. ios 폴더를 눌러 XCode를 열어준다.  1-2. 상단에 플러터 아이콘을 선택하고 Edit Sceme을 누르면 위와 같은 창이 뜨는 데 엔터를 누르고 Runner를 prod(배포용)으로, 하단에 "+" 를 눌러 dev(디버깅용)..
·Flutter
fatal error: module 'cloud firestore' not found  플러터 프로젝트의 배포/디버그 버전 분리를 한 뒤에 Xcode를 실행시키니 module 'cloud firestore' not found 가 나오며 런타임 에러가 발생했다. pod 인식에 무언가 문제가 생긴 것 처럼 보였다. 해결했던 방법은 아래와 같다.  먼저 플러터 프로젝트 안 iOS 폴더 터미널을 열어준다. pod cache clean --allpod deintegratesudo gem install cocoapods-deintegrate cocoapods-cleansudo arch -x86_64 gem install ffiarch -x86_64 pod repo updatearch -x86_64 pod insta..
·Flutter
답변 요약위젯들의 제약(Constraints)은 부모 위젯의 영향을 받아 유연하게 조정됩니다. 하지만 앱바는 기본 사이즈인 높이 56.0을 가지고 있습니다. 이러한 높이를 바꾸어줄 때 PreferredSize를 채택합니다. 앱바 뿐만 아니라 부모 위젯에 영향을 받더라도 높이나 너비 제약을 고정시키고 싶은 위젯에 PreferredSize를 사용할 수 있습니다.부가 설명Preffered Widget 이 없을 경우 앱바 기본 높이 56 고정import 'package:flutter/material.dart';void main() { runApp(MyApp());}class MyApp extends StatelessWidget { @override Widget build(BuildContext contex..
유선 이더넷 네트워크와 다르게 무선 네트워크는 치명적인 단점이 존재한다. 바로 유선과 다르게 collision detection이 안된다는 것이다. 그 이유에는 아래와 같이 3가지가 있다.Fading and Signal Strength Variations무선시그널은 거리에 매우 취약하다. 장애물이나 환경적 요인에 의해 신호 강도가 계속해서 변하기 때문이다. 따라서 거리가 멀리 떨어져있을 경우 collision을 탐지하지 못할 수 있다.Hidden Node ProblemA, B, C 3가지 디바이스가 있다고 할 때 A,B,C는 서로의 통신이 안되는 상태이다. 이때 A와 B가 동시에 C에게 데이터를 전송하면 C에서 collision이 발생하지만 a,b는 collision 이 발생했는지 알 길이 없다. 이때 ..
·Flutter
느낌이 안좋다. 분명히 플레이버튼에 작고귀여운 벌레가 있어야하는데 녀석이 보이지 않는다. 무엇인가 잘못되었다. Error: Dart library 'dart/ui' is not available on this platform. 슬픈 예감은 틀리지 않는다. dart extension 자체를 인식하지 못한다. 미봉책으로 터미널에 flutter run 명령어를 입력하면 실행은 되나 언제까지 이렇게 살 순 없다.  문제는 이녀석 때문이었다. 코틀린을 VSCode로 돌리기위해 Code Runner Extension을 깔았었는데 이후부터 dart extension 이 자동으로 인식이 안되고 있었다. 바로 uninstall 해주자  Code Runner를 uninstall 하면 귀여운 무당벌레가 다시 복귀한 것을 확..
flutter developer
'분류 전체보기' 카테고리의 글 목록 (6 Page)