반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 완전탐색
- 싱글톤
- 초기화
- 비동기 처리
- Widget Tree
- linebreak
- 플러터
- Android
- Lazy
- 자료구조
- 앱아이콘 변경
- flutter
- dfs
- 알고리즘
- 자바
- Java
- 재귀
- IOS
- Render object tree
- Singleton
- Kotlin
- 에러
- 플러터 동작
- zwj
- 프리즈드
- 코틀린
- element tree
- 프로그래머스
- 거리알고리즘
- dart
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
Flutter - export 를 활용한 dart 파일 관리 본문
반응형
개발을 하다보면 많은 import 때문에 코드 상단이 지저분해지는 경우가 많다.
보다 정결하게 코드를 관리하는 법은 없을지 항상 고민하다가 최근 아주 속시원한 솔루션을 찾을 수 있었다.
바로 export를 이용하는 방법이다.
예를들어 A라는 페키지 아래와 같은 파일이 있다고 생각해보자.
그리고 동일, 혹은 다른 페키지에 있는 파일에서 상기 정의한 파일들을 사용해야 한다면 아래와 같이 각 dart 파일에 대한 import를 해줘야한다 :
import 'package:flutter/widgets.dart';
import 'package:solve/pacakage_a/class_a.dart';
import 'package:solve/pacakage_a/class_b.dart';
import 'package:solve/pacakage_a/class_c.dart';
import 'package:solve/pacakage_a/class_d.dart';
main() {}
class MainApp extends StatelessWidget {
MainApp({super.key});
final ClassA classA = ClassA();
final ClassB classB = ClassB();
final ClassC classC = ClassC();
final ClassD classD = ClassD();
@override
Widget build(BuildContext context) {
return Container();
}
}
물론 IDE에서 알아서 import를 해줘서 불편할 건 전혀 없다.
하지만 composition 관계가 복잡한 파일에 추가해야 하는 다수 라인의 import를 깔끔하게 정리해 줄 수 있고,
페키지간의 의존성을 명확히 구분해야 할 때도 패키지 단위로 import를 하는 구조이기에 한 눈에 포함 관계를 확인할 수 있는 장점도 있다.
자 그럼 어떻게 다수 dart 파일들을 단일 파일로 export 하는지 알아보자.
우선 여러 파일들을 묶어(export) 줄 dart 파일을 만들자 :
그리고 export 키워드로 해당 파일에 추가할 dart 파일들을 나열해주자 :
export 'package:flutter/widgets.dart';
export 'class_a.dart';
export 'class_a.dart';
export 'class_b.dart';
export 'class_c.dart';
export 'class_d.dart';
6개 dart 파일들을 export했던 package_a.dart 하나만 import 하여 코드를 간결하게 관리할 수 있다 :
import 'package:solve/pacakage_a/package_a.dart';
main() {}
class MainApp extends StatelessWidget {
MainApp({super.key});
final ClassA classA = ClassA();
final ClassB classB = ClassB();
final ClassC classC = ClassC();
final ClassD classD = ClassD();
@override
Widget build(BuildContext context) {
return Container();
}
}
반응형
'Flutter' 카테고리의 다른 글
Flutter - Freezed 을 이용한 Model 관리 (0) | 2022.11.16 |
---|---|
Flutter - late 키워드 (0) | 2022.11.08 |
Flutter - WidgetsFlutterBinding.ensureInitialized()을 이용한 Main함수 Binding (0) | 2022.11.06 |
Flutter - Factory 생성자 (0) | 2022.11.03 |
Flutter - Xcode 13 업데이트 실패(무한 로딩) (0) | 2022.08.19 |
Comments