반응형
- 다트는 크로스 플랫폼에 기반을 둔 프런트엔드 프로그래밍 언어이다.
- 다트 파일은 main 함수를 프로그램의 진입점으로 한다.
void main() {
}
- 다트 파일은 톱 레벨(어느 요소에도 속하지 않는 최상위 영역)에 변수, 함수, 클래스 등을 선언할 수 있다.
// 톱 레벨 변수 선언
int topVariable = 100;
// 톱 레벨 함수 선언
void sayHello(String name) {
print('Hello, $name!');
}
// 톱 레벨 클래스 선언
class Car {
String make;
String model;
Car(this.make, this.model);
void displayInfo() {
print('Car: $make $model');
}
}
void main() {
// 톱 레벨 변수 사용
print(topVariable); // 100
// 톱 레벨 함수 사용
sayHello('World'); // Hello, World!
// 톱 레벨 클래스 사용
var myCar = Car('Honda', 'Civic');
myCar.displayInfo(); // Car: Honda Civic
}
- 자바와 같은 객체지양 언어이다.
- 모든 변수, 함수, 클래스는 객체이다.
- 외부 라이브러리는 import로 불러와서 사용하는데, 미리 구현된 기능을 라이브러리 또는 패키지라고 부른다.(둘의 차이, 다트 파일에 불러와서 사용하는 모든 요소를 라이브러리라 하고, 패키지는 다트 파일의 묶음을 말한다.)
- import로 라이브러리를 지정할 때는 절대 경로를 사용하거나 package 또는 dart 접두사를 사용한다.
- 같은 프로젝트에 다른 다트 파일을 불러올때는 상대 경로로 지정할 수 있다.
// 하나의 라이브러리안에 sction_1/main.dart와 outer_folder/outer_main.dart 가 존재하고,
// 라이브러리 외부에 some_folder/some_main.dart 존재하는데,
// 이 경우 main.dart에서 아래 import를 할 경우
import '../outer_folder/outer_main.dart'; // 성공
import '../../some_folder/some_main.dart'; // 실패
//some_folder/some_main.dart의 경우에는 라이브러리 외부라 상대 경로로 불러 올수 없다.
- 외부 패키지를 불러올떄는 주로 package접두사를 이용한다.
import 'package : http / http.dart';
// http 패키지에서 http.dart 파일을 불러 온다.
- 다트 언어에서 기본 적으로 제공하는 라이브러리를 가저올 때는 dart접두사를 이용한다.
import 'dart:core';
import 'dart:async';
- 자바나 코틀린의 경우 접근 제한자로 private , pulbic 등을 사용하는데 다트에는 접근제한자를 제공하지 않는다. 대신 요소앞에 _를 사용한다. 이렇게 _를 사용하면 이 파일에서만 이용하도록 제한된다.
//dart1.dart
int no1 = 10;
int _no2 = 20;
void sayHello(){}
void _sayHello2(){}
class User1{ }
class _User2{}
main(){
no1 = 20;
_no2 = 30;
}
//dar2.dart
import 'dart1.dart'
main(){
no1 = 20;
_no2 = 30; // 오류
sayHello();
_sayHello2(); // 오류
User1 user1 = User1();
_User2 user2 = _USer2(); // 오류
}
- 식별자의 별칭을 정할때는 아래와 같이 as를 사용 한다. 이렇게 할 경우 어떤 파일에서 가져온 값인지 명확하게 구분할 수 있다.
import 'dart1.dart' as Test1
main(){
no1 = 20; // 오류
Test1.no1 = 30;
Test1.sayHello();
Test1.User1 user1 = Test1.User1()
}
- 특정요소를 불러 올때는 show를 사용한다.
import 'dart1.dart' show no1, User1;
main(){
no1 = 30;
User1 user1 = User1();
sayHello(); // 오류
}
- as와 show를 합해서 사용도 가능하다
import 'dart1.dart' as Test1 show no1;
- hide를 사용하여 특정 요소를 제외할 수 도 있다.
import 'dart1.dart' hide sayHello1, User1;
main(){
no1 = 30
sayHello() // 오류
}
- as , show, hide를 사용하는 이유는 다양한 외부 패키지를 사용할 경우 변수,함수, 클래스의 이름이 겹칠떄가 있는데, as, show, hide를 통하여 제한하게 되면 어떤 파일의 요소인지 명확하게 알 수 있어 코드가 읽기 편해지 기 떄문이다.
- 작성 중인 파일에 다른 파일을 포함할 때 part나 part of 예약어를 사용하고, libaray 예약어와 함께 라이브러리를 만들 수 있다.
// a.dart
int aData = 10;
// b.dart
int bData = 20;
// test.dart
import 'a.dart';
import 'b.dart';
main(){
print('$adata , $bdata');
}
- 위와 다르게 import 할 파일또는 패키지가 20개 30개가 넘어간다면 import를 구분하기 어렵다. 그래서 라이브러리 다트파일 1개로 불러와서 편리하게 사용할 수 있다.
// a.dart
part of my_lib;
int aData =10;
//b.dart
part of my_lib;
int bData = 20;
// myLib.dart
libaray my_lib;
part 'a.dart';
part 'b.dart';
- library 예약어는 한 파일에 1번만 사용할 수 있다.
import 'myLib.dart';
main(){
print('$aData, $bData');
}
반응형
'2023년 부터 > Flutter' 카테고리의 다른 글
Dart - 믹스인(mixin) (0) | 2023.10.19 |
---|---|
Dart - 클래스와 객체 (0) | 2023.10.19 |
Dart - 함수와 제어문 (2) | 2023.10.19 |
Dart - 널 안정성 (0) | 2023.10.19 |
Dart - 데이터 타입 (0) | 2023.10.19 |