Dart
7 posts
[Dart/Flutter] null check와 null safety

개발을 하다보면 null 객체에 접근하여 에러가 발생하는 일이 많습니다. 이 에러를 피하기 위해 null check 코드를 추가하여 예외처리를 하게 되는데요. null check 코드를 넣다보면 어느새 매우 많은 null check로 코드가 길어지고 지저분해지기도 합니다. 이 글은 Dart에서 null check를 하는 방법과 Dart에서 지원하는 null safety(null 안정성)에 대해서 소개하려고 합니다. 1. if문과 삼항연산자로 null check 2. null-aware 연산자(??)로 null check 3. 메소드에서 null-aware 연산자(.?) 4. null safety (null 안정성) 1. if문과 삼항연산자로 null check 다른 언어와 동일하게 if문으로 다음과 같이 null check를 할 수 있습니다. 또는, 다음과 같이 삼항연산자를 사용하여 어떤 값이 null이면 default로 다른 값을 입력하도록 구현할 수도 있습니다. 2. null-…

[Dart/Flutter] 두 리스트의 공통 값 찾기

두개의 리스트가 공통적으로 갖고 있는 요소들을 찾는 방법을 예제와 함께 알아보겠습니다. 공통적으로 갖고 있다는 의미는, 두 리스트가 동일한 요소 값을 서로 갖고 있다는 의미로, 두 리스트의 교집합이라고 생각할 수 있습니다. 1. Set를 이용한 방법 2. for문을 이용한 방법 1. Set를 이용한 방법 Set는 함수를 제공하며, 두 Set의 공통 값을 갖고 있는 Set 객체를 리턴합니다. 따라서, 리스트를 Set로 변환하여 intersection() 함수로 공통 요소를 찾고, 다시 리스트로 변환하는 방법이 있습니다. 함수로 Set를 리스트로 변환 함수로 공통 요소 찾기 로 Set를 리스트로 변환 Output: 2. for문을 이용한 방법 아래와 같이 list1의 모든 값을 순회하면서, 어떤 값이 list2에 있을 때, 다른 리스트에 저장하여 공통 요소만 찾을 수 있습니다. for문으로 list1의 모든 요소 순회 list1의 어떤 요소가 list2에 있다면, 공통 값만 저장…

[Dart/Flutter] Double을 Int로 변환, 4가지 방법

Double 타입의 변수를 Int 타입으로 형변환하는 다양한 방법을 알아보겠습니다. Double을 Int로 변환하는 것은 간단하지만, 소수점 이하 숫자를 반올림할지, 올림 또는 버림할지에 따라서 필요한 함수를 사용해야 합니다. 1. toInt()를 이용한 방법 2. round()를 이용한 방법 3. ceil()을 이용한 방법 4. floor()를 이용한 방법 1. toInt()를 이용한 방법 는 double 타입을 int 타입으로 변환합니다. 변환하는 과정에서 소수점 이하의 숫자는 모두 버려집니다. 소수점 이하 숫자를 반올림하지 않으며, 다음에 소개하는 와 동일한 결과를 만듭니다. Output: 2. round()를 이용한 방법 는 double 타입의 숫자를 소수점 1자리에서 반올림하여 int 타입으로 변환합니다. Output: 3. ceil()을 이용한 방법 는 double 타입의 숫자를 소수점 1자리에서 올림하여 int 타입으로 변환합니다. Output: 4. floor()를 …

[Dart/Flutter] 두개의 Map 하나로 합치기

두개 이상의 Map을 하나의 Map으로 병합하는 방법에 대해서 알아보겠습니다. Map을 합칠 때 key가 모두 다르다면 문제는 없지만, 동일한 key가 다른 값을 갖고 있을 때는 어떤 값을 우선시할지에 따라서 구현 방법이 달라져야 합니다. 1. Spread Operator(전개 연산자)를 이용한 방법 Spread Operator는 같은 표현 방법인데, 객체가 갖고 있는 요소를 나열합니다. 아래와 같이 Spread Operator를 사용하면 Map 안의 요소들을 나열하여 새로운 Map의 요소에 포함됩니다. : map을 선언할 때, map1과 map2의 요소를 초기 값으로 입력 map1과 map2는 변하지 않고, 합쳐진 새로운 map이 생성됨 동일한 key가 있을 때, map2(뒤에 있는)의 값으로 업데이트됨 Output: 2. addAll()을 이용한 방법 는 map1에 map2의 모든 요소를 추가합니다. map1에는 map2의 요소가 추가되고, map2는 변경되지 않음 map을…

[Dart/Flutter] 문자열 분리하기, 자르기

문자열을 여러 문자열로 분리하는 방법에 대해서 알아보려고 합니다. 특정 문자를 기준으로 문자열을 분리하거나, 특정 Index를 기준으로 문자열을 여러 문자열로 나누고 싶을 때가 있습니다. 1. split()을 이용한 방법 2. 정규표현식을 이용한 방법 3. for문을 이용한 방법 4. 특정 Index로 문자열 자르기 1. split()을 이용한 방법 은 문자열을 str 기준으로 자르며, 분리된 문자열들을 리스트에 담아 리턴합니다. 아래 예제를 보시면, 문자열을 comma로 나누거나 공백으로 분리하였습니다. Output: 2. 정규표현식을 이용한 방법 정규표현식을 사용하여 아래와 같이 특정 문자로 문자열을 분리할 수 있습니다. : comma 문자열을 찾는 패턴 : text에서 패턴 regex에 해당하는 문자열을 찾고, 그 문자열을 기준으로 분리함 Output: 3. for문을 이용한 방법 for문으로 문자열의 문자를 순회하면서, 특정 문자를 기준으로 문자열을 자를 수 있습니다. …

[Dart/Flutter] 문자열 비교 (동등, 포함)

두개의 문자열이 같은지 비교, 포함 여부인지 등, 다양한 문자열 비교 방법에 대해서 알아보겠습니다. 1. == 연산자로 문자열이 같은지 비교 2. compareTo()로 문자열이 같은지 비교 3. contains()로 문자열 포함 여부 확인 4. startsWith(), endsWith()로 문자열 시작/끝 확인 1. == 연산자로 문자열이 같은지 비교 는 두개의 문자열이 같을 때 true, 다를 때 false를 리턴합니다. 아래와 같이 두개의 문자열이 같은지 비교할 수 있습니다. 대소문자를 구분하여 비교합니다. 알파벳이 같아도 대소문자가 다르면 다른 문자열로 판단됨 Output: 대소문자 구분 없이 비교 대소문자 구분 없이 비교하려면, 두개의 문자열을 모두 소문자 또는 대문자로 변경하여 비교하면 됩니다. 아래 예제는 두개의 문자열을 모두 소문자로 변경하여 비교합니다. Output: 2. compareTo()로 문자열이 같은지 비교 는 str1과 str2가 같을 때 0을 리턴, 다…

[Dart/Flutter] 문자열 마지막 문자 제거

문자열에서 마지막 문자만 제거하는 방법에 대해서 알아보겠습니다. 1. substring()으로 마지막 문자 제거 2. split()으로 마지막 문자 제거 3. 정규표현식으로 마지막 문자 제거 1. substring()으로 마지막 문자 제거 는 문자열의 start Index에서 end Index 이전까지 잘라서 리턴합니다. 즉, start는 포함하고 end는 포함하지 않는 문자열을 리턴합니다. 따라서, 아래와 같이 Index 0에서 마지막 문자의 Index 이전까지 자르도록 하여 마지막 문자만 제거할 수 있습니다. Output: 2. split()으로 마지막 문자 제거 는 문자열을 문자 1개 단위로 분리하고 각각의 문자가 저장된 리스트를 리턴합니다. 리턴된 리스트에서 함수로 마지막 요소를 삭제하고 다시 으로 리스트의 모든 값들을 합치면 마지막 문자만 제거된 문자열이 리턴됩니다. Output: 3. 정규표현식으로 마지막 문자 제거 은 string에서 pattern과 일치하는 문자열을…