// print
print('Hello Wrold');
// var
var i = 10;
var str = 'Hello';
var f = 3.5;
var b = true;
// dynamic - 뭐든 상관없음.
dynamic d = 10;
new_func(10.3); // Okay
void new_func(dynamic d) {
// ...
}
// number typecast
int n = 10;
num nn = n; // float or int
// 형변환
var bbb = 4.5;
a = bbb as int;
// final
final c = 10; // (메모리 동적초기화) 초기화 후 변경불가
const bb = 20;
// List
List<String> items = ['a', 'b', 'c'];
print(items);
var items2 = ['a', 'b', 'c'];
print(items2);
print(items2[0]); // okay
// List 병합
var items11 = [...items, 4, 5];
// set
Set<int> itemsSet = {1, 2, 3};
// var itemsSet = {1, 2, 3};
```dart
// map
var itemMap = {'key1': 1, 'key2':2};
// function option
func2(option_str: "hello");
func3(option_str: "hello2", age: 20);
void func2({String? option_str}) {
// ...
}
// @required : 반드시 포함
void func3({String? option_str, @required int age = 10}) {
// ...
}
// type 비교
int a = 0;
if (a is int) {
// ...
}
if (a is! int) {
// ...
}
// null일때 체크해서 기본값 넣기
var name;
print(name ?? '기본값'); // name이 null이라면 기본값 넣음
String str_name;
print(str_name?.toLowerCase()) // str_name? : null이 아닐때만 함수 호출
// 클래스 생성
var person = Person('홍길동', 10)
// person 오브젝트 내의 함수를 호출시에
..func1()
..func2(); // 호출가능
class Person {
String name;
// String _name; --> private
int age;
// 생성자
Person(this.name, this.age);
// getter
String get name => '제 이름은 $name';
// Example Func
void func1() {}
void func2() {}
}
// 비동기 요청 - future
networkRequest();
// 비동기 요청 - stream
StreamController _counterController = StreamController<int>();
_counterController.close();
}
Future networkRequest() async {
return await Future.delayed(Duration(seconds: 3));
}
// 상속
class Employee extends Person {
//...
}
// 구현
class Employee implements Person {
@override
int age;
// ...
@override
void func1() {}
// ...
}
class Employee with Person {
// 선택적 override
@override
void func2() {}
}
class HelloDart extends StatefulWidget {
const HelloDart({Key? key}) : super(key: key);
@override
_HelloDartState createState() => _HelloDartState();
}
class _HelloDartState extends State<HelloDart> {
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(onPressed: () => print('hello')/*이런식으로 익명함수 선언가능*/,)
);
}
}