library
, import
및을 사용할 수 있다는 것을 알고 #import
있지만 어느 것이 맞습니까?
나는 두 개의 파일을 가지고있다, MainClass.dart
그리고 Library.Dart
, 나는에 대한 참조를 추가 할 Library.dart
에서 MainClass.dart
. 어떻게 할 수 있습니까?
답변:
먼저 가져 오기 전에 해시 기호를 사용하거나 라이브러리 또는 다른 것을 사용하지 마십시오. 이것은 더 이상 사용되지 않는 오래된 구문입니다. 따라서 우리는 더 이상 사용하고 싶지 않습니다 #import('...')
. 올바른 구문은 다음과 같습니다.
import 'some_file.dart';
즉, 현재 파일 내에서 서로 다른 다트 소스 파일에 액세스하기 위해 수행 할 수있는 두 가지 방법이 있습니다. 첫 번째는 import
파일입니다. 다른 라이브러리를 현재 파일 (또는보다 정확한 현재 라이브러리)로 가져 오려는 경우와 같이이를 사용합니다.
일반적으로 파일이 동일한 디렉토리에 있거나 현재 파일의 하위 디렉토리에있는 경우 다음과 같이 가져옵니다.
import 'lib/library.dart';
그러나 pub 패키지 레이아웃을 사용하는 경우 일부 특수 바로 가기 참조를 사용하여 파일을 가져올 수도 있습니다 (특히 가져온 다른 패키지에서). 대부분의 응용 프로그램과 라이브러리는이를 염두에두고 설계되었으므로 pub 사이트 의 문서를 읽는 것이 좋습니다 . 또한 모두 소문자로 된 파일 이름, 공백 및 디렉토리 레이아웃에 밑줄을 사용하는 것과 같은 최상의 명명 규칙에 대한 제안이 있습니다.
다트 파일을 다른 파일로 가져 오는 것에 대해 알아야 할 또 다른 중요한 사항은 part
및 part of
지시문을 사용할 수 있다는 것 입니다. 이전에는 호출 #source
되었지만 혼동을 줄이기 위해 변경되었습니다 (해시 기호 제거로). 이 part
지시문은 여러 파일에 걸쳐있는 단일 라이브러리를 작성하고자 할 때 사용됩니다. 예를 들어 하나의 파일에 대해 조금 커지기 시작 하는 Awesome Library 가 있다고 가정 해 보겠습니다 . 우리는 라이브러리의 메인 파일을 생성 할 것입니다 (메인 메소드와 혼동하지 말 것). 이 파일은 일반적으로 라이브러리 자체와 동일한 이름을 갖습니다.
// awesome_library.dart
library awesome_library;
import 'dart:math';
import '...';
// this injects all the content of secret_file.dart
// into this file right here almost as if it was
// here in the first place.
part 'src/secret_file.dart';
// The rest of our file here
// ...
part 지시문은 기본적으로 src / secret_file.dart의 모든 것을 가져 와서 파일의 해당 부분에 삽입합니다. 이를 통해 거대한 Awesome Library 를 유지 관리하기 쉬운 여러 개의 작은 파일로 분할 할 수 있습니다 . 특별히 필요하지는 않지만 part of
, 편집자가 라이브러리의 "일부"임을 알 수 있도록 secret_file.dart 의 지시문 을 사용하는 것이 유용합니다 .
// secret_file.dart
part of awesome_library;
// ... Rest of our secret_file code below.
이와 같은 부품 파일을 사용할 때 부품 (즉, 라이브러리의 기본 파일이 아닌 모든 것)은 라이브러리 선언 자체를 가져 오거나 사용할 수 없습니다. 주 파일로 가져온 모든 것을 가져 오지만 추가 가져 오기를 추가 할 수는 없습니다.
자신이 만든 라이브러리 가져 오기 : 라이브러리 filename.dart
이름이 아닌을 가져 옵니다. 라이브러리의 이름 인 경우 그래서 : myLib
그리고 그것은 파일에 저장됩니다 : someDartFile.dart
당신은해야합니다
import 'someDartFile.dart';
Windows에 K : \ SomeDir \ someFile.dart에 라이브러리가있는 경우 다음을 작성해야합니다.
import '/K:/SomeDir/someFile.dart';
예:
import 'LibraryFile.dart'; //importing myLib
void main(){
//a class from myLib in the LibraryFile.dart file
var some = new SomeClassFromMyLibrary();
}
LibraryFile.dart의 myLib :
library myLibrary;
import 'dart:math';
class SomeClassFromMyLibrary{
String _str = "this is some private String only to myLibrary";
String pubStr = "created instances of this class can access";
}
여기에 전체 예가 있습니다.
//TestLib.dart
import 'LibFile.dart'; //SomeLibrary
void main() {
print("Hello, World!");
LibFile l = new LibFile();
print(l.publicString);//public
print(l.getPrivateString);//private
print(l.getMagicNumber); //42
}
//LibFile.dart
library SomeLibrary;
part 'LibFile2.dart';
class LibFile {
String _privateString = "private";
String publicString = "public";
String get getPrivateString => _privateString;
int get getMagicNumber => new LibFile2().number;
}
//LibFile2.dart
part of SomeLibrary;
class LibFile2 {
int number = 42;
}
나는 매우 늦게 대답하고 있지만 대답은 새로운 개발자에게 도움이 될 수 있습니다.
dart 패키지 (application / library)에서 항상 pubspec.yaml 파일을 사용하십시오.
pub get 명령을 실행하면 .packages 파일의 종속성 목록에 로컬 라이브러리가 추가됩니다.
다음과 같은 프로젝트 구조가 있다고 생각하십시오.
내 main.dart 파일에서 greeting.dart의 내용을 참조하려면 아래와 같이 라이브러리를 추가해야합니다.
import 'package:my_project_name/greeting.dart'
가져온 후에는 main.dart 파일에서 greeting.dart 파일의 내용을 사용할 수 있습니다. 참고 : 'lib'디렉토리가 누락 된 것을 볼 수 있으므로 실제 경로를 사용하지 않았습니다.
먼저 귀하가 언급 한 이름인지 확인하십시오. pubspec.yaml
과 가져 오려는 파일이 정확히 동일한 이름을 공유
예:
pubspec.yaml
name: flutter_wordpress_app
description: flutter wordpress app
...
....
// dirOne/dirTwo/greeting.dart
class FavArticleBloc {
// Your code goes here
}
import 'package:flutter_wordpress_app/dirOne/dirTwo/greeting.dart'
void main(){
var some = new FavArticleBloc();
}
그러나 main.dart
당신은 import 'package:flutter_wordpress_app
다음과 같이 지정할 필요가 없습니다.
import 'dirOne/dirTwo/greeting.dart