blob: 35ff034c634e3d771787f8ad51df07997bb2d2a2 [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of dart.async;
/**
* Indicates that loading of [libraryName] is deferred.
*
* Applies to library imports, when used as metadata.
*
* Example usage:
*
* @lazy
* import 'foo.dart' as foo;
*
* const lazy = const DeferredLibrary('com.example.foo');
*
* void main() {
* foo.method(); // Throws a NoSuchMethodError, foo is not loaded yet.
* lazy.load().then(onFooLoaded);
* }
*
* void onFooLoaded(_) {
* foo.method();
* }
*/
class DeferredLibrary {
final String libraryName;
final String uri;
const DeferredLibrary(this.libraryName, {this.uri});
/**
* Ensure that [libraryName] has been loaded.
*
* The value of the returned future is true if this invocation of
* [load] caused the library to be loaded.
*/
external Future<bool> load();
}