Languages/Dart(Flutter)

Languages/Dart(Flutter)

[Dart] Extension Method와 응용

Extension Method Dart에서 제공하는 기능인 Extension Method는 특정 타입에 대한 전용 메소드를 만들어주는 기능이다. 이를 이용해 해당 데이터 타입에서 자주 사용되는 동작을 호출해 주는 메소드를 지정해 줄 수 있다. 아래와 같은 측면에서 Extension Method 사용을 고려해 보면 좋다. 가독성 향상 휴먼 에러 감소 유지보수성 개선 코드 재사용성 증대 코드 중복 감소 다만 지나치게 남용할 경우 오히려 너무 기능이 세분화되거나 코드 간 의존성이 높아질 수 있어 사용에 유의하여야 한다. 나는 프로젝트 구현시 Extension Method를 DateTime formatting을 위해 사용하거나 Enum Type에 대한 객체를 생성해 두고 요소별로 분기처리를 수행할 때 주로 사용..

Languages/Dart(Flutter)

[Flutter] BuildContext와 Builder

Flutter를 이용하여 개발한 지 시간이 꽤 지났지만 아직 BuildContext에 대해 정확히 알지 못한 채 진행해 왔던 것 같다. BuildContext는 Stateless와 Stateful 위젯 모두에서 사용되며, Dialog를 띄울 때와 화면 높이, 너비를 알아낼 때도 사용되는 등 자주 만나게 되는 만큼 정리해 보고 넘어가려 한다. BuildContext @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Demo')), body: Builder( ... 이하 중략 override 메소드인 build는 구현한 UI 위젯들을 화면에 출력될 수 있도록 리턴한다. BuildCon..

Languages/Dart(Flutter)

[Dart] 반복문 심화(map, reduce, fold)

map map은 forEach와 유사하게 동작한다. map과 forEach는 List의 element를 e변수에 차례대로 받아오고 element 값을 자리의 파라미터 값을 중괄호 안쪽의 기능수행 영역에서 사용할 수 있다. 다만 map 함수는 return 값을 반환할 수 있고 반환된 모든 값을 차례대로 변수에 저장할 수 있다는 차이가 있다. void main() { List colors = ['red', 'orange', 'yellow', 'green', 'blue']; // forEach loop colors.forEach((e) { print(e); }); // map loop final result = colors.map((e){ return '${e} is color'; }); } 하지만 map의 ..

Languages/Dart(Flutter)

[Dart] 외부반복(for)과 내부반복(forEach)

외부반복(for) 외부반복이란 Iterator와 같이 사용자가 직접 별도의 객체를 생성하여 명시적으로 컬렉션의 각 요소를 가져와 처리하는 방식을 지칭한다. 일반적으로 우리가 알고 있는 반복은 외부반복이며 전통적인 반복 방식으로 사용자가 직접 컬렉션의 각 요소를 반복, 순회하며 처리하고 반복문의 시작과 끝을 명시적으로 지정할 수 있다. 이 방식에서 반복의 제어는 사용자의 코드에 의해 명시적으로 관리된다. 반복 로직과 실제 비즈니스 로직이 혼재되어 코드의 가독성과 유지보수성이 감소할 수 있다. 구문의 간결성 측면에서 반복 제어 로직이 사용자의 코드에 명시적으로 포함되어 있어 명시적으로 콜백 함수를 호출해야 하기 때문에 비교적 구문이 더 길어지고 복잡하다. 병렬처리 수행 시에도 동기화에 대한 관리를 직접 해주..

Languages/Dart(Flutter)

[Flutter Error] Google Social Login 에러 - PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)

PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null) Flutter를 이용해 Android에서 Google 소셜 로그인 기능을 구현할 때 이 에러가 발생하게 되는데, 이미 이 에러를 띄웠을 때는 소셜 로그인을 이용하여 구글 로그인을 위한 API 요청은 실행이 되었을 것으로 생각된다. 아마도 대부분은 아이디와 비밀번호를 정상적으로 입력한 후 로그인을 위한 요청을 보냈을 때 이 에러를 반환한다. 일반적으로 인증서와 관련된 문제가 발생했을 때 아래 에러가 발생한다. 해당 에러가 발생하기 전에 놓친 부분들은 여러가지가 있겠지만 직접 경험해본 케이스는 아래와 같다. Firebase에 디버그..

Languages/Dart(Flutter)

[Flutter] 앱 서명 키 생성과 Debug Key, Release Key 생성 및 Google Firebase 키 등록 - Android

소셜 로그인 기능을 구현하거나 Firebase를 사용하는 경우 키를 생성해야 하는 경우가 있다. 또한 앱을 제작하고 구글 플레이 콘솔이나 애플 앱스토어에 등록하기 위해서는 앱 서명이 필수적이다. ios 같은 경우 맥에서 프로젝트를 진행하면 xcode가 일정 부분 해결해주지만 Android는 직접 앱 서명을 제작하고 등록해주어야 한다. 처음 앱 제작을 하면 갖가지 키들이 나오고 서명이 어쩌고 하는 말들이 막연하게 느껴져 공포스러울 수 있다. 아래 과정들을 천천히 따라 해 보면 조금 해소될 수 있기를 바란다. 순서는 아래와 같다. 자바 설치 키를 저장할 폴더로 이동 키 생성 KEY 확인 KEY 등록 google-services.json 1. 자바 설치 우선 java가 설치되어 있어야 한다. java11 버전..

alien_coder
'Languages/Dart(Flutter)' 카테고리의 글 목록