サーチ…


備考

importおよびlibraryディレクティブは、モジュールベースで共有可能なコードベースを作成するのに役立ちます。すべてのダーツアプリがあるlibrary 、それはライブラリディレクティブを使用していない場合でも、。ライブラリはパッケージを使用して配布できます。 pubについては、 PubパッケージとAsset Manager( SDKに含まれているパッケージマネージャ)を参照してください。

ライブラリの使用

importを使用して、あるライブラリの名前空間を別のライブラリのスコープでどのように使用するかを指定します。

import 'dart:html';

import必要な引数は、ライブラリを指定するURIだけです。組み込みライブラリの場合、URIには特別なdart: schemeがあります。他のライブラリでは、ファイルシステムパスまたはpackage:スキームを使用できます。 package: schemeは、パブツールなどのパッケージマネージャによって提供されるライブラリを指定します。例えば:

import 'dart:io';
import 'package:mylib/mylib.dart';
import 'package:utils/utils.dart';

ライブラリと可視性

Javaとは異なり、Dartにはキーワードpublicprotected 、およびprivateはありません。識別子がアンダースコア_で始まる場合、それはそのライブラリに対してプライベートなものです。

たとえば、別のライブラリファイル(たとえば、 other.dart )にクラスAがある場合、次のようになります。

library other;

class A {
  int _private = 0;

  testA() {
    print('int value: $_private');  // 0
    _private = 5;
    print('int value: $_private'); // 5
  }
}

メインアプリにインポートします:

import 'other.dart';

void main() {
  var b = new B();
  b.testB();    
}

class B extends A {
  String _private;

  testB() {
    _private = 'Hello';
    print('String value: $_private'); // Hello
    testA();
    print('String value: $_private'); // Hello
  }
}

あなたは期待される出力を得る:

String value: Hello
int value: 0
int value: 5
String value: Hello

ライブラリ接頭辞の指定

競合する識別子を持つ2つのライブラリーをインポートする場合は、一方または両方のライブラリーの接頭部を指定することができます。たとえば、library1とlibrary2の両方にElementクラスがある場合は、次のようなコードがあります。

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// ...
var element1 = new Element(); // Uses Element from lib1.
var element2 =
    new lib2.Element();       // Uses Element from lib2.

ライブラリの一部のみをインポートする

ライブラリの一部のみを使用する場合は、ライブラリを選択してインポートすることができます。例えば:

// Import only foo and bar.
import 'package:lib1/lib1.dart' show foo, bar;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

ライブラリの遅延読み込み

遅延ローディング(レイジーローディングとも呼ばれます)では、必要に応じて、オンデマンドでライブラリをロードすることができます。ライブラリを遅延ロードするには、まずdeferred asを使用してライブラリをインポートする必要があります。

import 'package:deferred/hello.dart' deferred as hello;

ライブラリが必要なときは、ライブラリの識別子を使用してloadLibrary()を呼び出します。

greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

上記のコードでは、 awaitキーワードは、ライブラリがロードされるまで実行を一時停止します。 asyncおよびawait詳細については、ここで非同期サポートの例を参照するか、言語ツアーの非同期サポートの部分を参照してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow