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
답변

