본문 바로가기
2023년 부터/Flutter

Dart 언어란?

by JeongUPark 2023. 10. 19.
반응형
  • 다트는 크로스 플랫폼에 기반을 둔 프런트엔드 프로그래밍 언어이다.
  • 다트 파일은 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