Flutter 01. 기본

2022. 9. 28. 19:59개인공부/Flutter

 enum Status{
    approved,
    pending,
    rejected,
  }



void main() {
  Status status = Status.pending;
  
  if(status == Status.approved){
     
  }
  
  
  final DateTime now = DateTime.now();

  print(now);

  // const DateTime now2 = DateTime.now();

  //const 는 빌드 타임의 값을 알아야한다
  //final 은 빌드 타임 값 몰라도 된다.

  /* build 할때 010101 이진수로 변환이 되는데 
   *Run을 누를때 빌드가 된다. 이것이 빌드타임.
   *작성하고있을때의 코드값을 알고있어야 한다.
   
  *그래서 const는 언제 선언될지 모르니까 date 값에 const를
  붙이면 오류가 난다는것.
  
  */

  
  
  
  
  // number ??= 3.0
  //  ??= 넘버가 만약 null 이라면 오른쪽 값으로 바꿔라

  int number1 = 1;
  print(number1 is int);
  print(number1 is String);
  // is 는 == boolean 값 나옴.
  // is! 는 != boolean 값 나옴.

  bool result = 12 > 10;

  // && 는 and 의 의미. 두 조건 다 true 여야 true.
  // || 는 or 의 의미. 둘 중 하나라도 true면 true.

  
  
  
  
  
  //list
  //리스트 타입
  List<String> blackpink = ['제니', '지수', '리사', '로제'];
  // List<String>타입의 리스트.

  print(blackpink);

  // idnex
  // 순서
  
  print(blackpink[0]); 
  // 0번째 배열인 제니 소환

   blackpink.add('김갑수');
  // 블랙핑크 배열에 '김갑수' 추가
  
  blackpink.remove('김갑수');
  // 블랙핑크 배열에 '김갑수' 빼기
  
  print(blackpink.indexOf('로제'));
  // 로제의 배열 순번

  
  
  
  
  
  //Map
  // key / Value 값으로 짝을 이룬다.
  
  Map<String,String> dictionary = { // 키타입, 밸류 타입
    'Harry porter' : '해리포터',
    'Ron Weasley' : '론 위즐리',
    'Hermione Granger' : '헐마이니'
  };
  
  print(dictionary);
  
  Map<String, bool> isHarryPotter={
    'Harry porter' : true,
    'Ron Weasley' :  true,
    'Ironman' :  false
  };
  
  print(isHarryPotter);
  
  isHarryPotter.addAll({
    'Spiderman' : false
  });
  // isHarryPotter 변수에 Spiderman 추가
  
  print(isHarryPotter['Ironman']);
  // 원하는 key의 값을 가져올수 있음
  // key Ironman의 value인 false가 나옴.
  
  isHarryPotter['Hulk'] = false;
  // isHarryPotter.addAll ({ 'Hulk': false}); 와 같음.
  
   isHarryPotter['Spiderman'] = true;
  // false 였던 값을 true로 바꿀수 있음.
  
  
  isHarryPotter.remove('Harry Ptter');
  // 해리포터가 지워짐.
  
  print(isHarryPotter.keys);
  // key값만 모두 가져오는 것.
  
  print(isHarryPotter.values);
  // value값만 모두 가져오는 것
  
  
  //Set
  // Key와 Value의 짝이 아니라 리스트처럼 나열됨
  // 하지만 List는 중복값 들어가지만 Set에는 안들어감
  
  final Set<String> names = {
    'Code Factory',
    'Flutter',
    'Blackpink',
    'Flutter'
  };
  
  print(names);
  // Flutter 가 두개 들어갔으니 하나만 나옴.
   
  names.add('Jenny');
  //제니 추가
  
  names.remove('Jenny');
  //제니 빼기
  
  print(names.contains('Flutter'));
  //Flutter가 들어가있으면 true, 없으면 False
  
  
  
  
  //if 문
  
  int total = 0;
  
  List<int> numbers = [1,2,3,4,5,6];
  
  for(int i =0; i< numbers.length; i++){
    total += numbers[i];
  } // 21
  
  print(total);
  
  for (int number in numbers){
    total += number;
  } // 21
  
  
  
  
  //while loop
  
  while(total < 10){
    total += 1;
  };
  
  

 
 
  
}








//named parameter - 이름이 있는 파라미터 (순서가 중요하지 않다.)

void addNumbers({ //int로 값을 돌려준다 //void는 값을 돌려주지 않는다.
   int x = 10,
   int y = 20,
   int z = 30
}) {
  int sum = x + y + z;
  
  print('x : $x');
  print('x : $y');
  print('x : $z');
  
  if (sum % 2 == 0){
    print("짝수입니다.");
  } else{
    print('홀수입니다.');
  }
  
}


//arrow 함수
// =>

void main(){
Operation operation = add;
  
  int result = operation(10,20,30);
  
  print(result);
  
  operation = subtract;
  
  int result2 = operation(10,20,30);
  
  print(result2);
  
}
int result3 = calculate(30,40,50, add);

print(result3);

// signature
typedef Operation = int Function(int x, int y, int z);

// 더하기
int add (int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x -y -z;

// 계산
int calcultate (int x, int y, int z, Operation operation){
  return operation(x,y,z);
}