fetchEgg() async { // 동시성처리 (await등 키워드 사용) await Future.delayed(Duration(seconds: 2)); // 이 함수를 기다려줘 return Chicken('Big'); // } void main() async { // 동시성처리 (await등 키워드 "> fetchEgg() async { // 동시성처리 (await등 키워드 사용) await Future.delayed(Duration(seconds: 2)); // 이 함수를 기다려줘 return Chicken('Big'); // } void main() async { // 동시성처리 (await등 키워드 "> fetchEgg() async { // 동시성처리 (await등 키워드 사용) await Future.delayed(Duration(seconds: 2)); // 이 함수를 기다려줘 return Chicken('Big'); // } void main() async { // 동시성처리 (await등 키워드 ">

[flutter](https://torch-juice-f1f.notion.site/flutter-198367faeda880c59ef2dd4ff458cbb9)

/*--Priave--*/
_ //시작 함수-변수명, 코딩컨벤션아닌 구속력있는 문법임

/*--CLASS--*/
abstract class Animal // 추상클래스
mixin Flyable // 첨가클래스
class Bird
class Chicken extends Bird implements Animal with Flyable { // 상속받아 구현하고 첨가하기
	String name;
	Chinken({ // 생성자
		required String size,
		this.name, // 맴버변수
		String color, // 이넘마냥 관습적 , 종료
	}) : super(size: birdSize); // 부모생성자 호출
}

/*--ANNOTATION--*/
@override

/*--KEYWORD--*/
"" '' // 문자열 리터럴로서 완전히 동일한 기능과 문법, 상호표현을 위해 보완적 사용됨
import 'dart:math' as math; math.pow(2, 2); // 기본라이브러리 활용
import 'myfolder/mymath.dart' as namespaceMymath; // 네임스페이스느낌, 소속 클래스등 접근
const String str = "string"; // 컴파일타임 상수조건
final String str; // 한번은 할당가능, 변경불가
Object? obj; // 자료형? 데이터가 없는 경우 허용 (nullptr)
var str; // auto
enum { ... } // enum class 느낌, 단 각 요소하위에 .index가 있어 상수로 사용가능

/*--FUNCTION--*/
Future<Chicken> fetchEgg() async { // 동시성처리 (await등 키워드 사용)
	await Future.delayed(Duration(seconds: 2)); // 이 함수를 기다려줘
	return Chicken('Big'); // 
}
void main() async { // 동시성처리 (await등 키워드 사용)
	try {
	  Chicken myChicken = await fetchEgg();	// 이 함수를 기다려줘
	} catch(e) {
		print('error info: $e');
	}
}

// dart는 오버로딩개념 비존재(함수명은 단 한번만 사용)
Chicken beBorn(String size = 'Small', {String name}) {} // 중괄호: 선택 매개변수 지정
beBorn(); // small
beBorn('Small'); // small
beBorn(name: 'GoldDuck'); // small goldduck
beBorn(size: 'Small', name: 'GoldDuck'); // small goldduck
Chicken beBorn({required String size, String name}) {} // 중괄호내, required 필수 매개변수 지정(초기화값불가)
beBorn('Big'); 
beBorn(size: 'Big', name: 'GoldDuck');
 

/*--CONTAINER--*/ 
// 자료형 섞어쓰면 자동으로 상위 클래스로 구성됨 (double + int → num | String + num → Object)
List<String> exList = ["kakao", "naver", "samsung", "hyundai"]; // list
Map<String, int> exMap = {"kakao" : 4, "naver" : 3, "samsung" : 1, "hyundai" : 2} // map
int value = exMap["LG"] ?? 0; // 없으면 0