Flutter

Flutter) dart 기본 문법(변수선언, 연산자, 루프, 함수, 클래스, 비동기)

jennyiscoding 2024. 3. 30. 12:31

1. 변수선언

main() {
  // 위에 Run을 클릭하면돼
  // 화면 출력
  print("Hello World!"); // 끝에 ;붙임.

  // 변수선언
  // var는 데이터에 의한 추론형 변수 선언.
  var name = "유빚";
  print(name);

  name = "관우";
  print(name);

  // 상수(안바뀌는애들) 선언
  const age = "Jang";
  print(age);

  // 정수
  int intNum1 = 30;
  print(intNum1);

  int intNum2 = 20;
  print(intNum2);

  // 사칙연산
  print(intNum1 + intNum2);
  print(intNum1 - intNum2);
  print(intNum1 * intNum2);
  print(intNum1 / intNum2);
  print(intNum1 % intNum2); // 나머지
  print(intNum1 ~/ intNum2); // 몫

  double doubleNum1 = 1.5;
  double doubleNum2 = 1.2;

  print(doubleNum1 + doubleNum2);
  print(doubleNum1 - doubleNum2);
  print(doubleNum1 * doubleNum2);
  print(doubleNum1 / doubleNum2);

  // 문자열
  String str1 = "유비";
  String str2 = '장비';
  print("$str1와 $str2");

  // 정수의 문자열 보간법
  int intNum1a = 170;
  int intNum2a = 70;

  print("intNum1과 intNum2의 합은 ${intNum1a + intNum2a}");

  // Boolean
  bool isTrue = true;
  bool isFalse = false;
  print("bool은 $isTrue 와 $isFalse 만을 가진다");

  // var와 dynamic
  dynamic name1 = "장비";
  name1 = "조자룡";
  name1 = 100;

  // collection
  List threeKingoms = [];
  threeKingoms.add('위!');
  threeKingoms.add('촉!');
  threeKingoms.add('오!');
  print(threeKingoms);

  // 수정하기
  threeKingoms[0] = "먀하";
  print(threeKingoms);

  // 삭제하기
  threeKingoms.removeAt(0);
  print(threeKingoms);

  // 개수구하기
  print(threeKingoms.length);

  // 더하기
  threeKingoms.add(1);
  print(threeKingoms);

  // 정해진 변수타입의 데이터만 추가하기
  List<String> threeKingdoms2 = [];
  // threeKingdoms2.add(10); //에러가 떠!!
  print(threeKingdoms2);

  // 리스트 선언 시 초기값 할당
  List<String> threeKingdoms3 = ['위', '촉', '오'];
  print(threeKingdoms3);

  // map
  Map fruits = {
    'apple': '사과',
    'grape': '포도',
    'watermelon': '수박',
  };

  print(fruits['apple']);

  // map바꾸기
  fruits['watermelon'] = "시원한수박";
  print(fruits);

  // 데이터 추가하기
  fruits['banana'] = '바나나';
  print(fruits);

  Map<String, int> fruitsPrice = {
    'apple': 1000,
    'grape': 400,
    'watermelon': 500,
  };

  print(fruitsPrice);

  // null을 쓸수있는게 int? 임!
  int applePrice = fruitsPrice['apple']!;
  int sumGrapeApple = fruitsPrice['apple']! + fruitsPrice['grape']!;
  print(sumGrapeApple);

  String name5 = '유비';
  name5 = "니나";

  final String name6 = "불변";
  // name6 = "변할까?"; // 에러남!! final은 불변!

  const String name7 = "교장";
  // name7 = "교감"; // 이것도 에러나. final과 같이

  // const와 final은 뭐가 다를까?
  final DateTime now1 = DateTime.now(); //현재일자, 시간이 나옴
  print(now1); //클릭할때마다 다른 시간이 나오지? final은 실행시에 결정되는 값으로 쭉감.

  // const DateTime now2 = DateTime.now(); // 선언조차불가. 계속 바뀌는 애는 const로 선언불가함.
  // print(now2);
}

 

2. 연산자

main() {
  // 연산자
  int num = 0;
  num += 1;
  num++;
  print(num);

  num--;
  num -= 1;

  //optional: null safety
  int? num2 = null;
  print(num2);

  // default
  num2 ??= 1;
  print(num2);

  // 단항 증감 연산자
  int num3 = 20;
  num3 += 10;
  print(num3);

  // 조건 연산자
  int num4 = 10;
  int num5 = 5;

  print(num4 < num5);
  print(num4 > num5);
  print(num4 <= num5);
  print(num4 >= num5);
  print(num4 == num5);
  print(num4 != num5);

  int num6 = 10;
  int num7 = 12;

  print(num4 > num5 && num6 == num7);

  // 조건문
}

 

3. 루프

main() {
  int sum = 0;
  for (int i = 1; i <= 10; i++) {
    sum += 1;
  }
  // print(sum);

  List numList = [1, 2, 3];
  for (int j in numList) {
    print(j);
    if (j == 2) {
      break;
    }
  }
}

 

4. 함수

main() {
  print(sum(1, 2));
}

sum(int x, int y) {
  // 타입 써도되고 안써도 됨!
  return x + y;
}

 

5. 조건문

main() {
  int num1 = 10;
  if (num1 > 10) {
    print('입력한 숫자 $num1은 10보다 큰 수입니다.');
  } else if (num1 < 10) {
    print('입력한 숫자 $num1은 10보다 큰 수입니다.');
  } else {
    print('num1은 10입니다');
  }
  print("--End--");

  int score = 85;

  if (score >= 90) {
    print('A학점입니다');
  } else if (score >= 80) {
    print('A학점입니다');
  } else if (score >= 70) {
    print('B학점입니다');
  } else if (score >= 70) {
    print('C학점입니다');
  } else if (score >= 60) {
    print('D학점입니다');
  } else if (score >= 80) {
    print('F학점입니다');
  }

  // 삼항연산자
  int num2 = 10;
  num2 > 100 ? print('100보다큼1') : print('작음1');
  String result = num2 > 100 ? "큼2" : "작음2";
  print(result + ": 이런식으로도 가능하다");
}

 

6. 클래스

class Calc {
  // Field 또는 property라고 부른다. num1, num2를.
  late int num1; //late: 지금 데이터 없지만 나중에 데이터 꼭줄께
  late int num2;

  //Constructor
  Calc(num1, num2) {
    // this.num1 은 위에 Field에 선언된 애들을 가르킴. 오른쪽 num1은 Calc부분에서 받은 num1
    this.num1 = num1;
    this.num2 = num2;
  }

  //Function
  add() {
    return num1 + num2;
  }

  subtract() {
    return num1 - num2;
  }

  multiply() {
    return num1 * num2;
  }
}

 

클래스 쓰는 부분

import '6_class_Calc.dart';

main() {
  Calc calc = Calc(1, 2); // 뒤에 쓰는게 생성자(Constructor)
  print(calc.add());
  print(calc.subtract());
  print(calc.multiply());
}

 

8. 비동기 

main() {
  checkVersions();
  print('End process');
}

checkVersions() async {
  var version = await lookUpVersion();
  print(version);
}

int lookUpVersion() {
  return 10;
}