Dart : https://dart.dev/guides/language/language-tour
1. Using libraries
- import 를 사용하면 라이브러리의 네임 스페이스가 다른 라이브러리 범위에서 사용할 수 있다
// dart:html 라이브러리를 import 한다
import 'dart:html';
// test 패키지 라이브러리를 가져올 경우
import 'package:test/test.dart';
2. Specifying a library prefix
- 충돌하는 식별자가있는 두 개의 라이브러리를 가져 오는 경우 접두사를 지정할 수 있다
// lib1 과 lib2 에 모두 Element 클래스가 있는 경우
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2; // as 로 lib2 로 정의해준다
// lib1 의 Element 는 그냥 사용하면 된다
Element element1 = Element();
// lib2 의 Element 는 위에서 지정한 lib2 로 가져와서 사용한다
lib2.Element element2 = lib2.Element();
3. Importing only part of a library
- 라이브러리의 일부만 사용하려는 경우 필요한 라이브러리만 가져올 수 있다
// lib1 의 foo 만 import 한다
import 'package:lib1/lib1.dart' show foo;
// lib2 의 foo 를 제외한 모든걸 import 한다
import 'package:lib2/lib2.dart' hide foo;
4. Lazily loading a library
- 지연 로딩을 사용하면 라이브러리가 필요한 경우 웹앱이 요청시에 로드 할 수 있다
- 지연 로딩을 사용할 수있는 경우는 아래와 같다
- 웹앱의 초기 시작 시간을 줄이기 위해
- 알고리즘의 대체 구현을 시도하는 등의 A/B 테스트 수행 시
- 선택적 화면과 다이얼로그 같이 거의 사용되지 않는 기능을 로드할 때
- dart2js 만 지연 로딩을 지원한다
- Flutter, Dart VM 및 dartdevc 는 지연 로딩을 지원하지 않는다
// deferred as 로 hello 로 지연 로딩 한다
import 'package:greetings/hello.dart' deferred as hello;
// 라이브러리가 필요 할 때, 위에서 정한 라이브러리 식별자인 hello 로 loadLibrary() 를 호출한다
Future greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
- 위 코드에서 await 키워드는 라이브러리가로드 될 때까지 실행을 일시 중지한다
- 지연 로딩을 사용하는 경우 유의 사항
- 지연된 라이브러리의 상수는 import 파일의 상수가 아니다
이 상수는 지연된 라이브러리가 로드 될 때까지 존재하지 않는다 - import 파일에서 지연된 라이브러리의 타입을 사용할 수 없다
대신 지연된 라이브러리와 import 파일에 의해 import 된 라이브러리로 인터페이스 타입을 이동하는게 좋다 - Dart는 deferred as namespace 를 사용하여 정의한 네임스페이스에 loadLibrary() 를 암시 적으로 삽입한다
loadLibrary() 함수는 Future 를 반환한다
- 지연된 라이브러리의 상수는 import 파일의 상수가 아니다
5. Implementing libraries
- Create Library Packages 참고
- 라이브러리 소스 코드를 구성하는 방법
- export 지시문을 사용하는 방법
- part 지시문을 사용하는 경우
- library 지시문을 사용하는 경우
- 조건부 import 와 export 를 사용하여 여러 플랫폼을 지원하는 라이브러리를 구현하는 방법
'기타개발 > Flutter' 카테고리의 다른 글
Dart # 11 : Callable classes, Isolates, Typedefs (0) | 2020.08.28 |
---|---|
Dart #10 - Asychrony support, Generator (0) | 2020.08.28 |
Dart #8 : Generics (0) | 2020.08.28 |
Dart #7 : Extension method, Enum, Mixin (0) | 2020.08.28 |
Dart #6 : Abstract, Implicit interface, Extends (0) | 2020.08.28 |
댓글