본문 바로가기

Flutter/Dart7

[Dart] 다트 비동기 프로그래밍 - Future / async, await / Stream 비동기 프로그래밍? : 함수 실행시 요청한 결과를 기다리거나, 대기하지 않고 바로 다음 코드를 진행! 응답 순서 != 요청한 순서 언제든 응답이 오면 그때 응답을 처리한다~ → 컴퓨터 자원을 낭비하지 않고 더욱 효율적으로 코드를 실행할 수 있다. * Future : 미래에 받아올 값 제네릭으로 어떤 미래의 값을 받아올지 정할 수 있다! → 서버 요청과 같이 오래 걸리는 작업을 기다린 다음 값을 받아오기 때문에 필요 Future name; Future number; ... * Future.delayed() : 특정 기간 동안 아무것도 하지 않고 기다림 ...(생략) Future delayed(Duration(seconds: 3), (){ print('$number1 + $number2 = ${number1.. 2023. 6. 8.
[Dart] Dart 언어 기초 문법 - (5) try...catch try...catch 문 : 코드 실행을 시도해보고, 문제가 있을 시 잡아라! try ~ catch 사이 괄호 → 에러 없을 시 실행할 로직을 작성 catch가 감싸는 괄호 → 에러가 났을시 실행할 로직 작성 try 로직에서 에러가 났을시 바로 catch 로직 실행됨 void main(){ try{ final String name = '할로발로'; print(name); // 에러 없으니 출력됨 }catch(e){ // 에러가 있을 경우에 실행할 로직 print(e); } } throw 키워드로 에러 발생시킴 void main(){ try{ final String name = '코인노래방'; // 고의적으로 에러 발생 throw Exception('이름이 잘못됐습니다!'); print(name); }ca.. 2023. 6. 7.
[Dart] Dart 언어 기초 문법 - (4) 함수와 람다 함수의 일반적인 특징 1. 한 번 작성, 여러 곳에서 재활용 가능 2. 반환 값 없을 경우 void 키워드 사용 매개변수 지정 방법 1. 위치 매개변수 (positional parameter, 순서가 고정된 매개변수) - 입력된 순서대로 매개변수에 값 지정 int addTwoNumbers(int a, [int b = 2]){ return a + b; } void main(){ print(addTwoNumbers(1)); //3 } 2. 명명된 매개변수 (named parameter, 이름이 있는 매개변수) - 순서 상관 X, 지정하고 싶은 매개변수의 이름 이용, 값 입력 - { } / required 키워드 이용 int addTwoNumbers({ required int a, int b = 2; }) {.. 2023. 6. 7.
[Dart] Dart 언어 기초 문법 - (3)연산자, 제어문 Dart의 연산자 수치 연산자 null값 입력 관련 연산자 값 비교 연산자 타입 비교 연산자 논리 연산자 * 기본 수치 연산자 : 기본 산수 기능 + : 더하기 - : 빼기 * : 곱하기 / : 나눈 몫 % : 나눈 나머지 단항 연산 ++ -- += -= *= /= * null 관련 연산자 : 다트언어 - 변수 타입이 null값을 가지는지 여부를 직접 지정! 타입 뒤에 '?'를 추가해줘야 null값 저장 허용 void main(){ // 타입 뒤에 ? 명시 - null값 가질 수 있음 double? number1 = 1; // 타입 뒤에 ? 명시 無 - 오류 발생 (null값 안됨) double number2 = null; } 변수에 새로운 값 추가시 '??' 사용하면 기존에 null인 때만 값 저장 되.. 2023. 6. 7.
[Dart] Dart 언어 기초 문법 - (2)컬렉션 컬렉션 : 여러 값을 하나의 변수에 저장 가능한 타입 서로의 타입으로 자유롭게 형변환이 가능하다! 1) List - 여러 값을 순서대로 저장 2) Map - 특정 키 값 기반으로 빠르게 검색 3) Set - 중복된 데이터 제거시에 사용 * List 타입 : 여러 값을 순서대로 한 변수에 저장시에 사용 * 원소 : 리스트의 구성 단위 * : List에 넣을 타입 명시 가능 void main(){ List blackPinkList = ['리사', '제니', '로제', '지수']; } // 첫 원소 : blackPinkLikst[0] // 마지막 원소 : blackPinkList[3] // 길이 반환 : blackPinkList.length * List에서 자주 사용되는 함수 : add() / where() .. 2023. 6. 2.
[Dart] Dart 언어 기초 문법 - (1) * 해당 포스팅은 '코드팩토리의 플러터 프로그래밍' 서적을 참고하여 작성했습니다. 메인함수 : 엔트리 함수 기호 void main(){ } print() 함수 : 문자열을 콘솔에 출력 void main(){ print('Hello World'); } 주석 : void main(){ //한 줄 주석 /* * 여러줄 주석 * 입니다. */ /// 문서 주석 /// IDE에서 Documentation 으로 인식 } var / dynamic 변수 선언 : var 변수명 = 값; 타입추론 지원! - 명시적으로 타입 선언하지 않아도 됨 var : 타입 추론 이후 타입이 고정됨! dynamic : 변수의 타입이 고정되지 않음 - 다른 타입의 값 저장 가능 final / const : 변수 값 처음 선언 후에 변경할 .. 2023. 6. 2.
[Dart] 다트 언어의 장점 * 해당 포스팅은 '코드팩토리의 플러터 프로그래밍' 서적을 참고하여 작성했습니다. Dart Programming 언어 UI 제작에 최적화 완전한 비동기 언어, 이벤트 기반 isolate를 이용한 동시성 기능 제공 동시성 기능? → 특정 프로세스의 실행 시간이 다른 프로세스의 실행 시간이 다른 프로세스의 흐름과 겹치는 상황에서 동시에 실행하는 것 = 2개 이상의 프로세스가 동시에 계산을 진행하는 상태 JIT(Just in Time) 컴파일 - 핫 리로딩, 실시간 메트릭스 확인, 디버깅 Hot Reload : 코드 변경 사항 발생시 화면에 즉시 반영 AOT(Ahead of Time) 컴파일 - 휴대폰 빌드 전에 기계어 코드로 사전 컴파일해서 코드 빌드 가능 (속도가 빠르다!) 효율적 UI 개발 가능 : Nu.. 2023. 6. 2.