스터디/Flutter+Dart

Flutter/Dart Library의 충돌을 막아보자 (import, as, show, hide)

Dalmangyi 2022. 8. 31.

Flutter/Dart 를 개발하다보면 점점 많은 라이브러리를 사용하게 되고,

라이브러리끼리 많은 충돌을 일으키기도 합니다.

이럴때는 키워드를 사용하면 많은 부분을 해결할 수 있습니다. 

 

 

 

라이브러리를 추가할때 다음과 같이 사용합니다. 

import 'dart:async';
List data = [1, 2, 3];
Stream stream = new Stream.fromIterable(data);

 

 

하지만 개발을 하다보면, 정말 많은 라이브러리를 추가하게 되고

라이브러리에 포함된 클래스 이름이 중복되는 경우가 많습니다. 

 

 

 

 

그래서 중복을 방지하기 위해 네임스페이스를 지정해줍니다. 

import 'dart:async' as abc_async;
List data = [1, 2, 3];
abc_async.Stream stream = new abc_async.Stream.fromIterable(data);

로 사용할 수 있습니다. 

 

 

 

그리고 라이브러리에서 show 키워드를 사용하면 특정 클래스만 가져올 수 있습니다. 

import 'dart:async' show Stream;
List data = [1, 2, 3];
Stream stream = new Stream.fromIterable(data); // 사용가능
StreamController controller = new StreamController(); // 사용불가

Stream 클래스만 가져왔기 때문에, dart:async 라이브러리에 포함되어 있는 StreamController는 사용하실 수 없습니다. 

 

 

 

반대로 hide 키워드를 사용하면, 적힌 클래스를 제외한 클래스만 사용이 가능합니다. 

import 'dart:async' hide Stream;
List data = [1, 2, 3];
Stream stream = new Stream.fromIterable(data); // 사용불가
StreamController controller = new StreamController(); // 사용가능

 

 

 

 

 이외에도 코드를 다른 클래스로 분리해서 관리하면, 라이브러리의 충돌을 막을 수 있습니다. :-)

댓글