Dart 문법 정리

2023. 1. 4. 21:05·Flutter
728x90

Dart는 모든 플랫폼에서 빠른 앱을 위한 클라이언트 최적화 언어.

  1. UI 최적화용
    1. 사용자 인터페이스 생성 요구에 특화된 프로그래밍 언어로 개발
  2. 생산적인 개발
    1. 핫 리로드를 사용하여 실행 중인 앱에서 즉시 결과 확인
  3. 모든 플랫폼에서 빠름
    1. 모바일, 데스크톱 및 백엔드용 ARM 및 x64 머신 코드로 컴파일. 또는 웹용 JavaScript로 컴파일
  • Flutter 프레임워크는 인기 있는 다중 플랫폼 UI 툴킷으로 Dart 플랫폼으로 구동되며 iOS, Android, macOS, Windows, Linux 및 웹에서 실행되는 UI 경험을 빌드하기 위한 도구 및 UI 라이브러리를 제공합니다.
  • Dart는 유저 인터페이스 생성의 필요에 맞게 특별히 설계되고 최적화된 익숙한 구문을 갖고 있음.
  • Flutter 애플리케이션을 만들 때 필요한 Dart의 모든 기능, 규칙 및 구문에 대해 정리.
  • 잘 설계된 Dart 코드를 일관되게 작성하는 모범 사례를 학습하여 잘 구조화된 Flutter 애플리케이션을 구축할 수 있음.

Dart Web

  • dart 코드를 javascript로 변환하는 컴파일러

Dart Native

  • dart 코드를 여러 CPU의 아키텍처에 맞게 변환
    • IOS,AOS,Window,MacOS 등등

JIT

  • Just-in-time compiler : 개발중인 코드의 결과를 화면에 바로 보여줌

AOT

  • ahead-of-time compiler : 개발이 모두 끝나고 배포하기전 컴파일러를 하면 전환

변수

  • var : 일일히 변수 타입을 지정 할 필요 없음.
  • dynamic :
    • 여러가지 타입을 가질 수 있는 변수, 선언 되지 않는 변수, 변수가 어떤 타입인지 알수 없을때 사용
    • 인터넷에서 데이터를 받았을 때 데이터 타입을 모르는경우 dynamic을 이용하여 확인
  • null safety :
    • 개발자가 null 값을 참조할 수 없도록 함.
    • 변수가 null 값 일수도 있으면 변수뒤에 ‘?’ 사용하면됨
    • nico null 이 아니라면 isNotEmpty 속성 요청
    • String? nico = 'nico'; nico =null; if(nico != null) { nico.isNotEmpty; } }
  • FinalVariable : final name = ‘명관’;
    • 한 번 정의된 변수를 수정할 수 없게 만듬.
  • Late Variable: late final String name;
    • 초기 데이터 없이 변수를 선언 할 수 있음
    • Api 작업에서 많이 사용.
    • 변수를 먼저 만들고 데이터를 나중에 넣을 수 있고 실수를 막아줌
    • data fetching을 할 때 유용
  • const : const name = ‘명관’;
    • compile-time constant 매우중요
    • 값이 절대 바뀌지 않고 컴파일이 될 때 안다.
    • 컴파일 할 때 알고 있는 값에 사용.
    • 앱에 사용할 상수들 이 있을 때 사용.
  • Basic Data Types : 모두 object로 이루어짐, class
    • Bool
    • String
    • int : num으로 부터 상속
    • double : num으로 부터 상속
    • num : int, double 다 됨
  • List : class
    • var numbers = [1,2,3,4];
    • collection if : Menu , Navigation bar 만드는데 user가 로그인을 했는지 안했는지
    • var giveMeFive = true; var numbers = [ 1,2,3,4, if(giveMeFive) 5 ];
    • String Interpolation
    • var name = '명관'; var age = 23; var greeting = 'hello my name is $name and ${age+2}';
    • Collection for : 코드를 단축해준다.
    • void main(List<String> args) { var oldFriends = ['명관', '주헌']; var newFriends = [ '지훈', '지원', '범준', for(var friend in oldFriends) "😊 $friend", ]; print(newFriends); } [지훈, 지원, 범준, 😊 명관, 😊 주헌]
  • Maps
    • Map<String, Object>
      • Object란 어떤 유형이도 될 수 있다.
      • var을 사용해서 Map을 사용할 수 도있고
      Map<int,bool> player = {}; // key : int , value: bool
      Map<List<int>,bool> player = {}; // key : int값을 가진 List
      List<Map<int, bool>> player = [
          { 1: true},
          { 2: true}, 
        ];
      
  • Sets
    • Set에 속한 모든 아이템은 유니크하다
    • 모든 요소가 유니크하다, Sequences
  • Function
    • fat arrow syntax
    • String sayhello(String name) => "안녕하세요 $name ~!";
  • String sayhello(String name) { // call api // perform cla return "안녕하세요 $name ~!"; } void main() { print(sayhello('명관')); }
  • Named Parameters
    • 명시적으로 required로 표시되지 않는 한 선택 사항
    • 기본값을 제공하지 않거나 Named parameters를 필수로 표시하지 않으면 해당 유형은 기본값이 null이 되므로 null을 허용
    • null safety 때문에 default value를 줘서 만들 수 도 있음
    • named arguments
      • 전달해야 되는 요소들의 위치를 기억하는 대신 함수의 정의를 보고 순서상관없이 자료형만 지켜서 적어주면 됨
    • required
      • parameters들을 필수적으로 가져와야 된다고 명시
      • String sayHello( {required String name, required int age, required String country}) { return '안녕하세요 $name, 저는 $age, $country입니다.'; } void main() { print(sayHello(age: 12, country: 'korea', name: '명관')); }
  • Optional Positional Parameters
  • String sayHello(String name, int age, [String? country = 'korea']) => '안녕하세요 $name, 저는 $age, $country입니다.'; void main() { var results = sayHello('명관', 12); print(results); }
  • QQ Operator
    • 좌항이 null이면 우항을 return
    • 좌항이 null이 아니면 좌항을 return
    String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';
    
    void main(List<String> args) {
      capitalizeName('abc');
      capitalizeName(null);
    }
    
  • Typedef
    • 자료형에 사용자가 원하는 alias를 붙일 수 있게 해준다. (자료형 이름의 별명을 만들 때 사용)
    • typedef listInt = List<int>; listInt reverseListOfNumbers(listInt list) { var reversed = list.reversed; return reversed.toList(); } void main(List<String> args) { print(reverseListOfNumbers([1, 23, 45, 44])); }
  • Class
    • class에서 property를 선언할 떄는 타입을 선언
  • Constructors
    • Constructors method는 class와 이름이 같아야한다.
    class Player {
      final String name;
      int xp;
    
      Player(this.name, this.xp);
    
      void sayHello() {
        print('안녕 내이름은 $name');
      }
    }
    
    void main(List<String> args) {
      var player = Player('명관', 1500);
      player.sayHello();
    }
    
728x90

'Flutter' 카테고리의 다른 글

[피플] - 이슈 수정 (git, 협업능력)  (1) 2023.02.03
[Flutter 문법]StatefulWidget parameter 넘겨주기  (0) 2023.01.20
인스타그램 클론코딩  (0) 2023.01.03
CustomErrorMessage  (0) 2023.01.03
Flutter 개발 공부 정리  (0) 2023.01.02
'Flutter' 카테고리의 다른 글
  • [피플] - 이슈 수정 (git, 협업능력)
  • [Flutter 문법]StatefulWidget parameter 넘겨주기
  • 인스타그램 클론코딩
  • CustomErrorMessage
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (208)
      • 알고리즘 (68)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (12)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    Apple Developer Academy
    알고리즘
    피플
    today i learned
    IOS
    재귀
    문법
    자료구조
    SwiftUI
    협업
    개발
    Xcode
    컴퓨터구조
    코딩테스트
    Java
    백준
    Swift
    FLUTTER
    til
    riverpod
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
Dart 문법 정리
상단으로

티스토리툴바