프로그래밍 언어에는 컴파일(Compile) 언어와 인터프리터(Interpreter) 언어가 있다. 컴파일 언어는 전체 소스코드를 한 번에 번역하여 컴퓨터에게 전달하고, Python과 같은 인터프리터 언어는 각 라인을 실행하며 순차적으로 명령 줄들을 실행한다. 이 두 가지 타입의 언어 중 Dart는 컴파일 언어에 해당하며, 일반적으로 Dart는 Flutter를 이용해 모바일 앱을 구현할 때 주로 사용되고 있다. 컴파일 언어는 한 번에 번역하여 컴퓨터에게 명령을 전달하는 특성이 있고, 이에 따라 명령어를 실행하는 타이밍을 컴파일 타임(Compile Time)과 런타임(Run Time)으로 나눌 수 있다. 즉, 특정한 라인의 명령은 각각의 할당되어야 하는 실행 시간에 명령이 수행된다. 간략하게 말하면 컴파일 ..
스크린 이동 후 뒤로가기를 수행할 때 또는 Drawer와 Dialog등이 클릭 후 자동으로 숨겨지기 원할 때 pop을 사용한다. 이 때 Navigator.of(context).pop()과 Navigator.pop(context)를 사용하는 두 가지 방식이 있어 차이를 짚고 넘어가려 한다. 사실 두 함수 기능에 큰 차이는 없으며 Navigator.pop(context)이 내부적으로 Navigator.of(context).pop()을 호출하는 구조이다. Navigator.of(context).pop()을 사용하면 가장 타이트하게 떨어져있는 context를 불러올 수 있다. 그러므로 특정 예외상황을 제외하고는 범용적으로 사용될 수 있는 Navigator.pop(context)를 쓰는 것이 낫다. 이 예외 상황..
Flutter 앱 개발할 때 padding 또는 width, height 등을 고정으로 잡아놓으면 결국 다른 해상도의 디바이스에서 실행할 때 화면이 다 깨져버린다. 프로토타입 만들 때는 고정으로 해도 되지만 실제로 배포하기 전에 각기 다른 해상도에서도 문제가 생기지 않도록 비율로 지정해놓는 것이 정신건강에 이롭다. MaterialApp 내부에서 해당 screen의 높이와 너비는 MediaQuery를 이용해 알아낼 수 있다. double width = MediaQuery.of(context).size.width double height = MediaQuery.of(context).size.height import 'package:flutter/material.dart'; void main() { runAp..