react native로 webRTC 너무 헤메다보니 flutter를 공부해보라는 나의 사수님...
애초에 개발자 경력 1년도 안된 사람에게 혼자 webRTC로 P2P videoCall 만들라는게 문제가 아니었나 싶음....
1년 미만 개발자에게 일 시켜놓고 답답하다 할거면 경력자를 뽑으시지 그러셨나유...
암튼 내가 알던 언어(java, javaScript)랑 조금은 다른 Dart.
모르던 부분? 다른 부분? 에 대해서만 끄적여본다.
void main() {
int num = 1;
var name = "슬기 $num"; //슬기 1
String sentence = "는 레드벨벳 멤버";
String? sentence2 = "는 아무개";
bool boolean = true;
print('$num. $name$sentence $boolean'); //1. 슬기는 레드벨벳 멤버 true
print(name.runtimeType); //String
// sentence = null; //불가
sentence2 = null; //가능
sentence2 ??= "는 누구?"; //sentence2가 null일 경우에 오른쪽에 있는 data 대입
print(sentence2); // 는 누구
List redVel = []; //[]
redVel.add('아이린'); //[아이린]
redVel.add('슬기'); //[아이린, 슬기]
redVel.add('조이'); //[아이린, 슬기, 조이]
redVel.removeAt(1); //[아이린, 조이]
redVel[0] = '샐리'; //[샐리, 조이]
//형변환
Map redVelvet = redVel.asMap(); //{0: 샐리, 1: 조이}
Set redVelvet2 = Set.from(redVel); //{샐리, 조이}
print(redVel.toSet()); //{샐리, 조이}
redVel.toList(); //[샐리, 조이]
//List랑 똑같지만 자동으로 중복된 값을 없애준다
Set<String> names = {'Code', 'Flutter'};
names.add('React native'); //{Code, Flutter, React native}
names.add('Code'); //{Code, Flutter, React native}
print(names.contains('Flutter')); //true
Map<String, String> keyval = {'apple': '사과', 'banana': '바나나'};
print(keyval['apple']); //사과
keyval.addAll({'kiwi': '키위'}); //{apple: 사과, banana: 바나나, kiwi: 키위}
// strawberry 키가 없는 경우 추가
keyval['strawberry'] =
'딸기'; //{apple: 사과, banana: 바나나, kiwi: 키위, strawberry: 딸기}
keyval.remove('apple'); //{banana: 바나나, kiwi: 키위, strawberry: 딸기}
// banana key가 있는 경우 value 변경
keyval['banana'] = '아이스크림'; //{banana: 아이스크림, kiwi: 키위, strawberry: 딸기}
print(keyval.keys); //(banana, kiwi, strawberry)
print(keyval.keys.toList()); //[banana, kiwi, strawberry]
print(keyval.values); //(아이스크림, 키위, 딸기)
print(keyval.values.toList()); //[아이스크림, 키위, 딸기]
}
final과 const는 선언 후 값 변경이 불가한건 똑같으나, const의 경우 compileTime에 값이 지정이 되어있어야한다. final은 runTime에 값이 지정이 되어도 상관없다.
void main() {
DateTime now = DateTime.now();
print(now);
//딜레이 함수
Future.delayed(
Duration(milliseconds: 1000),
(){
DateTime now2 = DateTime.now();
print(now2);
}
);
}
Enum(enumeration)은 일련의 이름을 가진 상수 집합을 나타내는 데이터 형식이다. 그냥 하드코딩 해도 되는데 enum을 쓰는 이유는, 이렇게 상수로 정의된 값들을 실수로 오타를 내거나 다른 값을 대입하는 등의 오류를 줄일수 있기 때문이다.
enum Status {
approved, //승인
rejected, //반려
pending //대기
}
void main(){
Status status = Status.approved; // approved, rejected, 또는 pending 중 하나의 값을 가지는 변수
switch (status) {
case Status.approved:
print("승인되었습니다.");
break;
case Status.rejected:
print("반려되었습니다.");
break;
case Status.pending:
print("대기 중입니다.");
break;
default:
print("알 수 없는 상태입니다.");
break;
}
print(Status.values.toList()); //[Status.approved, Status.rejected, Status.pending]
}
cascade operator(연속 호출 연산자 또는 .. 연산자)는 메소드 호출을 연속적으로 실행할 수 있게 해주는 연산자다. 이 연산자는 객체를 가리키는 변수 뒤에 .. 를 붙이면, 해당 객체의 메소드를 연속적으로 호출할 수 있게 된다.
void main() {
Idol idol = new Idol('슬기', '레드벨벳');
idol.sayName();
idol.sayGroup();
//위에랑 결과값 같음
new Idol('샐리', '회사')
..sayName()
..sayGroup();
addNumber(1, 2, 3);
}
//class Type
class Idol {
String name;
String group;
Idol(this.name,this.group);
void sayName() {
print('제 이름은 ${this.name}입니다.');
}
void sayGroup() {
print('${this.group} 소속 입니다.');
}
}
//function Type
addNumber(int x, [int? y, int? z]) { //파라메터 속 []는 있어도 되고 없어도 되는 optional 파람
y ??= 0;
z ??= 0;
int sum = x + y + z;
if (sum % 2 == 0) {
print('짝수');
} else {
print('홀수');
}
}
'Flutter' 카테고리의 다른 글
Kakao login 4가지 hashkey 얻기 (0) | 2023.06.13 |
---|---|
Flutter Firebase Google Login (SHA-1) (0) | 2023.06.12 |