# null safety

Null safety 뿌시기
해당 글은 다트 공식 문서의 Null safety를 읽으며 정리한 내용입니다. 1. Nullable and non-nullable types 1-1. Nullable하게 하고 싶으면 (?) 일반적인 변수 선언은 non-nullable, 즉 null 값을 가질 수 없는 변수로 간주한다. Flutter가 사용하는 Dart언어의 경우 null-safety를 지원하기 때문에 변수를 명시적으로 nullable하게 만들 수 있다. null값을 허용하고 싶다면 변수 선언시 타입에 ? 를 추가한다. int값만 가지는 a 변수를 선언했으나 a에 null값이 할당되었으므로 아래와 같은 에러가 발생한다. a변수가 nullable하도록 수정한다. 1-2. 제네릭 타입 매개변수를 Nullable하게 위 코드 실행시 발생하는 에러 메세지는 아래와 같다. Str
[Dart] dart 입문 (3) - Null safety
Null safety란? NULL null은 부재(없음, 아무것도 있지 않음)이다. null safety는 개발자가 null값을 참조할 수 없도록 하는 것 코드에서 null 값 참조시 Runtime Error(사용자가 사용시에 발생하는 문제) 발생 : 컴파일러가 잡아내지 못한다. Dart는 몇몇 구버전에 대해서는 null safety가 없을수도 있다. Null safety방식 dart에서는 어떤 변수가 null이 될 수 있음을 정확히 표시해야한다. 어떠한 변수가 null값이 될 수도 있음을 나타내기 위해서는 변수 선언시에 자료형 뒤에 '?'를 붙여줘야 한다. 기본적으로 모든 변수들은 non-nullable이고, 자료형 뒤에 '?'을 붙여줌으로써 nullable로 만들 수 있다. 예를들어, 라고 적으면 변수 ena는 string이 될 수도, null이 될 수도 있다. 따라서 string method인 를 사용하려고 하는 경우에
[AndroidRoadMap] Part 1. 개발 언어
Android 개발자라면, 혹은 개발자가 되고 싶다면 도구인 개발 언어를 기본부터 응용까지 잘 다룰 줄 알아야 합니다. 이 포스트는 Kotlin 언어와 관련해 아래 내용들에 대해 정리합니다. ⚠️ 개인 경험을 기반으로 적은 지식이므로 잘못된 내용이나 추가로 덧붙일만한 내용이 있다면 댓글이나 개인적으로 언제든 알려주세요! >Kotlin의 기본 특징 및 Java와의 비교 > >Q) null safety의 개념이란? > >Q) mutable과 immutable 컬렉션의 차이는 무엇이며 각각 언제 쓰는 게 좋은가? > >Q) [lateinit var와 lazy delegate의 차이와 각각의 장단점은 어떻게 되는가?](#lateinit-var와-l
Dart Variables
// main 함수는 실행함수로 반드시 있어야함 void main() { // 1. 변수선언 var: 함수나 메소드 내부 지역변수 선언시 var 주로 사용 var name = '지노'; // 선언하는 타입(지금은 STRING)으로 맞춰짐 // = String name; // class 에서 변수나 property를 선언할 때는 타입을 지정해줌 name = 'gino'; //변수를 수정할 때는 같은 타입으로 // 2. dynamic type var namm2; // 변수가 어떤 타입인지 알기 어려울 때, 특히 json이랑 함께 작업할 때 유용 // = dynamic name2; // dynamic 은 가급적 쓰지 않고 정말 필요할 때만 써야함 name2 = 'gino'; name2 = true; name2 = 12; if (name2 is int) { // dynamic 변수인 경우 if문 이렇게 활용하기도 함 }
[Dart] 문법의 첫 시간
영등포 새싹캠퍼스에서의 flutter 첫 시간에 dart 문법을 배우게 되었습니다. 우선 저는 flutter 코드를 한 두번씩 쳐보면서 무언가를 만들려는 시도를 해보았기에 이번 시간에 배운 변수, 상수들이나 if, for문에 대해 한번 정리하고 넘어가고자 합니다. dart문법 공식 문서 : https://dart.dev/language dart문법 - Variables : https://dart.dev/language/variables 📚 변수의 특징들 Dart에는 기본 타입[ int, double, String, bool ]과 타입 추론의 var와 dynamic이 있습니다. 기본 타입은 다른 언어들과 같이 순서대로 정수형, 실수형, 문자열, 참 또는 거짓(불리언)을 나타냅니다. 하지만, var와 **dynam

Dart 기본 지식
Dart Dart Compiler Dart Native ARM32 ARM64 x86_64 Dart Web JavaScript Machine code JIT just-in-time 개발 도중 결과를 바로 확인 가능 AOT ahead-of-time 개발 이후 빌드시 빠른 실행 가능 Null Safety Dart 설치 (Windows) https://dartpad.dev/ 웹 에디터 기본 설치 방법 Chocolatey 설치 Dart 설치
플러터 Null Safety 개념
> Intro 플러터를 아무런 기초지식 없이 뛰어든 바람에 초장부터 Null 문제를 맞닿뜨렸다. 이 기회에 플러터의 Null Safety에 대한 개념을 확실히 잡아보는 시간을 가져본다. > Null Safety? 프로그램이 실행되고 있는 런타임 상태에서 Null Exception(Null 참조 에러)이 발생하게 되면 프로그램이 오류와 함께 중지된다. 다음과 같은 코딩이 내 프로그램 어딘가에 있다고 생각해보자. Cat 클래스로 schrodinger라는 고양이변수를 만들겠다고 선언만 하고 실체인 고양이 객체를 할당해주지는 않았다. 존재하지 않는 고양이가 '야옹' 할 수 있는가? 양자역학의 세상에선 그럴 확률이 존재하겠지만 우리가 사는 거시세계에선 존재하지 않는 고양이가 '야옹'거릴수는 없는 노릇이다. 시간이 흐르다가 세계가 이 코드를 만나면 조물주에게 Null Exception을 던져버리고 세상을 멈춰버리는 끔찍한 상황이 발생할 것이다. 이런

[Dart] - null safety
null safety란? null이란 값이 존재하지 않음을 의미한다. 가장 많은 런타임에러가 발생하는 이유중 하나는 null때문에 발생한다. 그 문제를 해결하기 위해 null safety를 적용하는 것이다. null값을 지정해주는 방법 해당 변수뒤에 ?를 넣어주면 null값을 넣어줄 수 있다. null값이 아님을 표현하는 방법 첫번째 에러: List의 첫번째 아이템은 2인걸 알 수 있으나, List는 널이 가능한 값이므로 변수 b에 넣어줄 수 없다는 에러
221203 - Validation, Spring, Lombok, null-safety
목차 Validation Data Binding Spring Resource SpEL Null Safety Lombok library HTTP 스펙 기초 1. Validation Validation이란? > 유효성 검증 > 주로 사용자 또는 서버의 요청 내용에서 잘못된 내용이 있는지 확인하는 단계를 뜻함 Validation의 종류 > 학문적으로 여러 세부적인 단계들이 있기도 하지만 실제로 개발자가 주로 챙겨야 하는 검증은 크게 두 종류로 나뉜다. > 1. 데이터 검증 > 2. 비즈니스 검증 데이터 검증 > 필수 데이터의 존재 유무 > 문자열의 길이나 숫자형 데이터의 경우 값의 범위 > email, 신용카드 번호 등 특정 형식에 맞춘 데이터 비즈니스 검증 > 서미스에 정책에 따라 데이터를 확인하여 검증 > 예) 배달앱인 경우 배달 요청을 할 때 해당 주문건이 결제 완료 상태인지
late는 왜 쓰나?
1. Late를 붙이라는 문구는 왜 뜨나? 변수를 사용하면서 아래와 같이 쓰면 "Non-nullable instance field 'strokePaint' must be initialized."이런 경고문구가 뜬다. 그럴 경우 대개는 생성자를 만들면 해결된다. 그런데 가끔 Late를 붙이라는 얘기가 뜬다. 왜 그럴까? 2. Late란 무엇인가? 다트에서는 late 변수를 제공한다. late변수를 사용하면 non-nullable변수의 초기화를 나중에 할 수 있다. 그런데 nullable로 선언해도 나중에 초기화를 할 수 있는데, 굳이 late라는 걸 만들어 놨을까? late대신 nullable로 선언할 경우, 개발자가 다른 사람에게 코드의 관리를 넘겼을 때, 넘겨받은 관리자가 null이라는 값도 변수에 의미있는 값으로 오해할 수 있기 때문이다. 만 쓰고 아래 생성자 초기화를 해주지 않을 경우, 에러가 뜬다. Dar
LateInitializationError: Field '변수명' has not been initialized.
오류 원인 late로 변수를 선언 후, 초깃값을 셋팅 하지 않고 해당 변수에 바로 접근할 경우 발생하는 오류 해결 방법 late로 선언된 변수가 초기화 되었는지 확인 할 수 있는 방법이 없어서 오류 대처가 힘들 수 있음. late를 사용할 경우 반드시 초깃값을 셋팅 하고 사용할 것.

Dart 문법 (1)
타입 모두 reference 타입 타입 체크 (num1+num2) is int (num1+num2).runtimeType var : 타입 추론 final vs const final : 상수, 재할당 불가 const : 컴파일 타임 상수, 앱 성능 향상시키지만 컴파일 타임에 값 결정됨 ✨ Null Safety 기본은 Null을 허용하지 않는다. 변수에 null을 대입하면 컴파일 에러가 발생한다. 늦은 초기화 : 값을 바로 초기화 할 수 없는 특수한 상황에 late 키워드 사용해 늦은 초기화 할 수 있다. → 꼭 필요한 상황이 아니라면 가급적 피할 것 nullable과 non-nullable : nullable이 아닌 변수에 nullable 변수를 대입할 수 없다. 반대도 마찬가지다. 분기 조건문 - if else 반복문 - for / while /

스프링 핵심 기술 익히기(4) - Null Safety
Null Safety 자바는 null check를 항상 해주어야 한다. null check를 하지 않아서 발생하는 에러(Null Point Exception)을 방지하기 위해 Null Safety가 필요하다. 1. @NonNull Annotation 해당 값이나 함수 등이 Null이 아님을 나타내는 어노테이션 1) 메서드 파라미터에 붙이는 경우 : null이라는 데이터가 들어오는 것을 사전에 방지한다. 2) 프로퍼티에 붙이는 경우 : null을 저장하는 경우를 경고한다. 3) 메서드에 붙이는 경우 : null을

[Flutter] null safety migration
목적 회사 앱 1.22.6v 을 2.2.0v로 올리기 위한 공식문서 리서치 내용 마이그레이션 단계 의존하는 패키지가 마이그레이션 될때까지 기다리세요 마이그레이션 진행 패키지의 코드를 정적으로 분석 변경사항 테스트 시험판 버전으로 pub.dev에 게시 > 앱 마이그레이션은 패키지 마이그레이션과 동일하다. 1. 마이그레이션 대기 최종적으로 종속성이 있는 패키지부터 마이그레이션 하는게 좋습니다. Flutter SDK 버전 업그레이드 채널 확인 스테이블 채널이 아니라면 변경 Flutter SDK upgrade 진행 안정적인 최신 릴리스로 전환 dart 2.12버전 이상이 있는지 확인하세요 종속성 상태 확인 모든
[Flutter] v1 프로젝트에서 v2로 갈아타기! Flutter.h Not Found error
2.0 마이그레이션을 한 이유 플러터 2.0 배포 초기에는 많은 패키지들이 null-safety를 지원하지 않았고, 당장 업그레이드해야 할 필요성을 느끼지 못해 1.22.6 버전을 유지하고 있었다. 지금은 유지보수가 진행되고 있는 대부분의 패키지들은 null-safety 지원이 되고 이를 기반으로 업데이트가 되고 있어 충분히 갈아탈 명분이 생겼다. 나 같은 경우에 6개 정도 사용 불가능한 패키지가 있었고, 5개는 다른 패키지로 대체하고 1개는 포크해서 null-safety 직접 수정할 계획을 세우고 작업에 들어갔다. 역시나 에러 v2-migrate 작업을 마치고...(생각보다 빨리 끝난다 ☺️) iOS 환경에서 빌드를 하는데 에러가 뿜! > fatal error: 'Flutter/Flutter.h' file not found 해결법 v2기반으로 프로젝트를 생성해서 iOS 폴더 내의 파일을 비교해보다가 찾았다. Flutter 깃허브 이슈에도 해당 문제