μ€λμ μ κ° κ³΅μλ¬Έμλ₯Ό ν΅ν΄ 곡λΆν Dart μΈμ΄λ₯Ό 곡λΆν λ μ€μν κ°λ λ€μ μ€λͺ νκ³ μ ν©λλ€. μ§κΈλΆν° μμνλλ‘ νκ² μ΅λλ€ :)
λͺ©μ°¨
- Dartμ μ€μν κ°λ
- λ§μΉλ©΄μ
Dartμ μ€μν κ°λ
1. λ³μμ λ°°μΉν μ μλ λͺ¨λ κ²μ κ°μ²΄μ΄λ€.
Dartμμ λ³μμμ λ°°μΉν μ μλ κ²μ λͺ¨λ κ°μ²΄μ λλ€. μ¬μ§μ΄ μ«μ(int), ν¨μ, null κ³Ό κ°μ κ² λ€λ μ¬μ§μ΄ Dartμμλ κ°μ²΄λ‘ μ·¨κΈν©λλ€. κ·Έλ¦¬κ³ JAVAμ κ°μ΄ λͺ¨λ κ°μ²΄λ Object ν΄λμ€λ₯Ό μμλ°μ΅λλ€.
μ¬κΈ°μμ μ€μν κ²μ ν¨μλ κ°μ²΄λ‘ λ°μλ€μΈλ€λ κ² μ λλ€. μ΄ λ»μ ν¨μλ₯Ό ν¨μμ μΈμκ°μΌλ‘ λκΈΈ μ λ μλ€λ κ² μ λλ€. μ΄λ° ν¨μλ₯Ό 1κΈ ν¨μλΌκ³ λΆλ¦ λλ€. Dartμμλ ν¨μλ₯Ό 1κΈν¨μλ‘ μ·¨κΈν©λλ€.
μλλ 1κΈν¨μμ λν μμμ λλ€
int a = 3;
void printA() {
print(a.toString());
}
void firstFunction(Function A) { // 1κΈ ν¨μ
A();
}
main() {
firstFunction(printA); // ν¨μλ₯Ό μΈμκ°μΌλ‘· λκΉ
}
2. Type μ μΆκ° κ°λ₯νλ€.
λ€μμ μ½λλ₯Ό 보면 μ’ λ μ΄ν΄κ° μ¬μΈ κ² μ λλ€
main() {
var a = 3; // μ΄ λ³μμ μ§μ€
print(a.toString()); // μ€μ λ‘ μ€λ₯μμ΄ 3μ΄ μΆλ ₯λ¨
}
μ¬κΈ°μμ λμ¬κ²¨ λ΄μΌνλ κ²μ “var a = 3;” μ μ΄λ ν νμ λ λͺ μλΌμμ§ μλ€λ κ² μ λλ€. μ΄λ Dartμ μΈμ΄μ νΉμ±μ ν΅ν΄ μ€λͺ μ΄ κ°λ₯ν©λλ€. Dartλ μ μ νμ ν μΈμ΄μ λλ€. μ¦ μ»΄νμΌ νμμ λͺ¨λ λ³μμ Typeμ΄ κ²μ¬λ©λλ€. κ·Έλ κΈ°μ Dartλ Typeμ μ μΆν΄λΌ μ μμ΅λλ€. κ·Έλ¦¬κ³ κ·Έμ λν μμκ° λ°λ‘ “var a = 3;”μ λλ€. 3 μ΄λΌλ κ°μ ν΅ν΄μ Dartλ aκ° Int Typeμ΄λΌκ³ μ μΆν΄λΈ κ² μ λλ€. λ¬Όλ‘ μ€μ λ‘ κ°λ°ν λλ νμ λͺ μλ₯Ό λ§μ΄νλ νΈμ λλ€. νμ§λ§ 무쑰건μ μΌλ‘ νμ μ λͺ μν νμλ μλ€λ κ² μ λλ€. Dartκ° μμμ Typeμ μ μΆν΄μ£ΌλκΉμ!
μλλ μ€μ λ‘ Flutterλ₯Ό κ°λ°ν λ μ¬μ©νλ μ½λμ λλ€.
final Color color; // νμ
μ λͺ
μν¨
final Widget child; // νμ
μ λͺ
μν¨
@override
Widget build(BuildContext context) {
return Theme(
child: child,
data: Theme.of(context).copyWith(primaryColor: color),
);
}
3. Generic Typeμ μ§μνλ€
κ±°μ λͺ¨λ OOP(κ°μ²΄ μ§ν₯)μΈμ΄κ° μ§μνλ Genericμ Dartμμλ μ§μν©λλ€. Generic μ λͺ¨λ₯΄μλ λΆλ€μ μν΄ κ°λ¨ν μ€λͺ ν΄λ³΄μλ©΄. Genericμ νλμ μ½λλ‘ λ€μν νμ μ κ°μ²΄μ λμ²ν μ μλ νλ‘κ·Έλλ° κΈ°λ²μ λ»ν©λλ€. OOP μΈμ΄λ₯Ό λ€λ£¨μ λ€λ©΄ μ΅μνμ€ T, List<T> κ° λ°λ‘ Genericμ λλ€.
Dartμμλ μ΄λ° Genericμ κ±°μ λͺ¨λ νμ μ μ§μν©λλ€. List<Int>, List<dynamic>(null, ν¨μ κ°μ κ²μ μ μΈνκ³ νμ μ΄λ νμ μ λ€ μ§μνλ€λ λ») λ₯Ό GenericμΌλ‘ ννν μ μμ΅λλ€.
4. μ΅μμ ν¨μλ₯Ό μ§μνλ€.
OOP κ°λ μ μ¬μ©νλ μΈμ΄μμ λ³΄ν΅ ν¨μλ ν΄λμ€λ΄μμ μ μΈμ ν΄μΌνλ©°, κ°μ²΄λ₯Ό μμ±ν ν ν¨μλ₯Ό μ¬μ©ν μ μμμ΅λλ€. νμ§λ§ μ΅μμ ν¨μλ ν΄λμ€ λ°μμλ μ μΈμ΄ κ°λ₯ν©λλ€. μ¦ κ°μ²΄λ₯Ό μμ±νμ§ μμλ ν¨μλ₯Ό νΈμΆν μ μλ κ² μ λλ€. μ¬μ§μ΄ ν¨μκ° κ΅³μ΄ ν΄λμ€μ μ’ μλμ§ μμλ λκΈ° λλ¬Έμ ν¨μ μμ ν¨μλ₯Ό μ μΈνλ μ€μ²© ν¨μλν κ°λ₯ν©λλ€. Dartλ μ΄λ° μ΅μμ ν¨μλ₯Ό μ§μνκ³ μμ΅λλ€.
λ€μμ Dartμ μ΅μμ ν¨μμ Flutter μμμ λλ€.
import 'package:flutter/material.dart';
void main() { // ν΄λμ€μ μ’
μλμ§ μμ (μ΅μμ ν¨μ)
runApp(ShrineApp());
}
class ShrineApp extends StatefulWidget {
const ShrineApp();
@override
_ShrineAppState createState() => _ShrineAppState();
}
5. μ΅μμ λ³μλ₯Ό μ§μνλ€.
μ΅μμ ν¨μμ λκ°μ κ°λ μ λλ€. κ΅³μ΄ ν΄λμ€μ μ’ μλμ§ μμλ μ΅μμμ λ³μλ₯Ό μ μΈν μ μμ΅λλ€.
λ€μμ Dartμ μ΅μμ λ³μμ μμμ λλ€.
int a = 3; // ν΄λμ€μ μ’
μλμ§ μμ (μ΅μμ λ³μ)
main() {
print(a.toString());
}
6. JAVAμ λ€λ₯΄κ² ν€μλκ° μλ€.
Javaμλ private, protected, publicκ³Ό κ°μ ν€μλκ° μ‘΄μ¬νμ΅λλ€. μ΄λ° ν€μλλ€μ μ΄μ©νμ¬μ OOPμ νΉμ§ μ€ νλμΈ μΊ‘μνλ₯Ό νμλλ°μ. Dartμλ μ΄λ° ν€μλλ€μ΄ μ‘΄μ¬νμ§ μμ΅λλ€. λμ μ΄λ¦μμ ‘_’ κ° λΆμΌλ©΄ privateμ κ°λ μΌλ‘ λ°μλ€μ λλ€. μ΄λ₯Ό ν΅ν΄ Dartμμλ μΊ‘μνλ₯Ό ν μ μμ΅λλ€.
μλλ Dartμμμ μ΄λ¦μ λν μμμ λλ€.
int _a = 3; // private '_'λ₯Ό μ΄λ¦μμ λΆμ
int a = 3; // public
void _printA() { // private '_'λ₯Ό μ΄λ¦μμ λΆμ
print(_a.toString());
}
void printA() { // public
print(a.toString());
}
main() {
_printA();
printA();
}
7. μ΄λ¦ κ·μΉ
Dartμμλ λ¬Έμ νΉμ ‘_’ λ‘ μμν΄μΌ νλ©°, κ·Έ λ€μλ λ¬Έμμ μ«μλ₯Ό μμ λ‘κ² μ‘°ν©νμ¬ μ΄λ¦μ μ§μ μ μμ΅λλ€.
8. Dartμλ ννμκ³Ό λͺ λ Ήλ¬Έμ΄ μλ€.
Dartμ μ½λμλ λ κ°μ§μ νμμ΄ μμ΅λλ€. ννμκ³Ό λͺ λ Ήλ¬Έμ λλ€. μ΄ λμ μ°¨μ΄λ₯Ό κ°λ¨νκ² λ§νμλ©΄ “λ°νκ°μ΄ μλλ μλλ” μ λλ€.
μλμ μ½λλ₯Ό ν΅ν΄μ μμλ₯Ό λ€μ΄λ³΄λλ‘ νκ² μ΅λλ€.
main() {
bool a = true;
print((a ? 3 : 5).toString()); // λ°νκ°μ΄ μμ ννμ(3ν μ°μ°μ)
if(a) { // λ°νκ°μ΄ μμ λͺ
λ Ήλ¬Έ
print(3.toString());
} else {
print(5.toString());
}
}
3ν μ°μ°μλ aκ° trueμ΄λ falseμ΄λμ λ°λΌ κ°κ° 3, 5μ κ°μ λ°νν©λλ€. κ·Έλ¬λ λ°λ‘ μλμ μλ if else λ¬Έμ 보μμΌ μ΄λ ν κ°λ λ°ννμ§ μμ΅λλ€. Kotlinκ³Ό κ°μ μΈμ΄μμλ if else λ¬Έλ μμΌλ‘ μ·¨κΈν΄μ λ°νκ°μ κ°μ§κ² λ©λλ€.
μλλ Kotlinμμ if elseλ¬Έμ μμΌλ‘ μ·¨κΈλ κ²μ 보μ¬μ£Όλ μμ μ λλ€.
//Kotlin μ½λ
var a = true
fun main () {
print(
if(a)
3
else
5
)
}
μμμ 보λ€μνΌ Kotlinμ if else λ¬Έμ λ°νκ°μ΄ μλ ννμμ΄κΈ° λλ¬Έμ λ°λ‘ 3ν μ°μ°μλ₯Ό μ¬μ©νμ§ μμμ΅λλ€. (Kotlinμμλ if elseλ¬ΈμΌλ‘ 3ν μ°μ°μλ₯Ό λ체 κ°λ₯νκΈ° λλ¬Έμ 3ν μ°μ°μκ° μμ΅λλ€.
νμ§λ§ Dartμμλ 쑰건문μ μλ¬΄λ° λ°νκ°λ κ°μ§μ§ μμ λ¨μν λͺ λ Ήλ¬Έμ λλ€. Kotlinκ³Ό Dartμ if else λ¬Έμ μ°¨μ΄λ₯Ό ν΅ν΄ ννμκ³Ό λͺ λ Ήλ¬Έμ μ°¨μ΄λ₯Ό λͺ ννκ² μ΄ν΄νμ€ μ μμΌμ€ κ² μ΄λΌκ³ μκ°ν©λλ€.
9. λ
μ¬κΈ°κΉμ§ μ€λλΌ μ λ§ κ³ μλ§μΌμ
¨μ΅λλ€.
μ€λͺ
μ΄ λ νμνμ λΆλ€μ μλμ λ§ν¬λ₯Ό μ°Έκ³ ν΄μ£ΌμκΈΈ λ°λλλ€.
DartμΈμ΄λ‘μ μ¬ν (Flutter 곡μ λ¬Έμ)
λ§λ¬΄λ¦¬νλ©΄μ
Dart μΈμ΄λ₯Ό 곡λΆν΄λ³΄λ©΄ μ΅μν¨μ λλλλ€. κ·Έ μ΄μ λ Dartκ° C, JS, Javaλ± μ¬λ¬κ°μ§ μΈμ΄μ νΉμ±μ κ°μ§κ³ μκΈ° λλ¬ΈμΈλ°μ. κ·Έ μ€μμλ Dartλ JSμ κ°λ μ κ°μ₯ λ§μ΄ μ±μ©νκ³ μλλ― ν©λλ€. μ΄ μ¬μ€μ ν΅ν΄μ Flutterμ κ΄ν νΌμ¦λ λ§μΆ μ μλλ°μ. Flutterλ JSλ₯Ό μ¬μ©νReact Nativeλ₯Ό λͺ¨ν°λΈλ‘ κ°λ°μ ν νλ μμν¬μ λλ€. λκ° νΌμ¦μ΄ λ§μΆ°μ§μ§ μλμ γ γ
μμΌλ‘λ Dartμ λν΄μ 곡λΆνκ³ κ·Έμ κ΄ν κΈμ μ¬λ¦΄ μμ μ λλ€.
κ°λμ© λ€λ¬μ κΈμ μ½μ΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ :)
κ°μ¬ν©λλ€!
'Flutter' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Flutter Provider + '?' ν¨ν΄ (feat. ChangeNotifier, Mobx, BLoC, etc..) (0) | 2020.09.12 |
---|---|
Flutter / 4ν : Flutterμ μνκ΄λ¦¬ (0) | 2020.08.01 |
Flutter / 3ν : Flutterμ UIμ κ΄νμ¬ (0) | 2020.07.24 |
Flutter / 2ν : Flutter νΉμ§κ³Ό μ₯λ¨μ (0) | 2020.07.24 |
Flutter / 1ν : Flutter μμ, μ€μΉνκΈ° (Window, Android Studio) (0) | 2020.07.24 |