91

library、、importさらにはを使用できることは知っていますが#import、どちらが正しいですか?

に2つのファイルがMainClass.dartあり、への参照を追加しLibrary.Dartたいと思います。どうやってやるの?Library.dartMainClass.dart

4

4 に答える 4

137

まず、インポートやライブラリなどの前にハッシュ記号を使用しないでくださいと言って、この前置きをさせてください。これは非推奨になっている古い構文です。したがって、使用する必要はありません#import('...')。正しい構文は次のとおりです。

import 'some_file.dart';

とはいえ、現在のファイル内のさまざまなdartソースファイルにアクセスするためにできることは2つあります。1つ目はimportファイルです。これは、現在のファイル(より正確には現在のライブラリ)に別のライブラリを追加する場合などに使用します。

通常、ファイルが同じディレクトリ、または現在のディレクトリのサブディレクトリにある場合は、次のようにインポートします。

import 'lib/library.dart';

ただし、pubパッケージレイアウトを使用している場合は、いくつかの特別なショートカット参照を使用してファイルをインポートすることもできます(特に、インポートした他のパッケージから)。ほとんどのアプリケーションとライブラリはこれを念頭に置いて設計されているため、パブサイトのドキュメントを読むことを強くお勧めします。また、すべて小文字のファイル名、スペースにアンダースコアを使用する、ディレクトリレイアウトなど、最適な命名規則に関する提案もあります。

dartファイルを別のファイルに取り込むことについて知っておくべきもう1つの重要なことは、partandpart ofディレクティブを使用できることです。これは以前は呼び出されて#sourceいましたが、混乱を減らすために変更されました(ハッシュ記号が削除されました)。このpartディレクティブは、複数のファイルにまたがる単一のライブラリを作成する場合に使用されます。たとえば、1つのファイルに対して少し大きくなり始めているAwesomeLibraryがあるとします。ライブラリのメインファイルを作成します(mainメソッドと混同しないでください)。このファイルは通常、ライブラリ自体と同じ名前になります。

// 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.

このようなパーツファイルを使用する場合、パーツ(つまり、ライブラリのメインファイルではないすべてのもの)は、ライブラリ宣言自体をインポートまたは使用できないことに注意してください。メインファイルにインポートされたものはすべてインポートしますが、追加のインポートを追加することはできません。

ライブラリの詳細については、このリンクを参照してください。

于 2012-10-18T13:15:49.477 に答える
27

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;
}
于 2012-10-18T10:33:40.443 に答える
13

私は非常に遅く答えていますが、答えは新しい開発者を助けるかもしれません。

dartパッケージ(アプリケーション/ライブラリ)では常にpubspec.yamlファイルを使用してください。

pub getコマンドを実行すると、ローカルライブラリが.packagesファイルの依存関係リストに追加されます。

私が次のプロジェクト構造を持っていると考えてください。

ここに画像の説明を入力してください

main.dartファイルのgreeting.dartの内容を参照するには、次のようにライブラリを追加する必要があります。

import 'package:my_project_name/greeting.dart'

インポートすると、main.dartファイルのgreeting.dartファイルのコンテンツを使用できます。注:「lib」ディレクトリが欠落していることがわかるため、実際のパスは使用していません。

于 2019-04-09T10:32:00.213 に答える
0

まず、それがあなたが言及した名前であり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
于 2020-03-20T12:06:04.650 に答える