blob: 5bb5a13dd61bf214f74e1da3c5ef75e57398c345 [file] [log] [blame]
/// Library that falls back to dart:html where available and provides a fake
/// implementation of dart:html that always throws exceptions otherwise.
///
/// Use https://pub.dev/packages/universal_html instead if you actually want
/// to run html manipulation code in a context where dart:html isn't
/// available. This library is a footgun and should only be used as an
/// incremental step in porting code from using dart:html to package:flutter.
///
/// This library is unlikely to be updated to reflect changes to dart:html so
/// do not use it if the version of dart:html from Dart 2.5 is not sufficient
/// for your needs.
library html_shim;
import 'src/_conversion_io.dart'
if (dart.library.html) 'src/_conversion_html.dart' as conversion;
import 'src/_html_io.dart' if (dart.library.html) 'src/real_html.dart'
show Element;
export 'src/_html_io.dart' if (dart.library.html) 'src/real_html.dart'
hide VoidCallback;
bool get isHtmlSupported {
double oneDouble = 1.0;
int oneInt = 1;
// TODO(jacobr): use actual config specific imports instead of checking if
// this is JavaScript or not.
return !identical(oneDouble, oneInt);
}
/// Use this method to convert an [Element] to a type suitable for a package
/// dependency that uses only `dart:html`.
///
/// This method exists as workaround for limitations in how the analyzer handles
/// conditional imports and exports. The return type of this method would be
/// Element if that didn't cause analysis errors.
///
/// Use this method very carefully as it is a foot gun only intended to help
/// users port code from dart:html to flutter.
dynamic toDartHtmlElement(Element e) => conversion.toDartHtmlElement(e);
/// Use this method to convert a [List<Element>] to a type suitable for package
/// dependencies that require dart:html.
///
/// This method exists as workaround for limitations in how the analyzer handles
/// conditional imports and exports. The return type of this method would be
/// [List<Element>] if that did not cause analysis errors.
///
/// Use this method very carefully as it is a foot gun only intended to help
/// users port code from dart:html to flutter.
List toDartHtmlElementList(List<Element> list) =>
conversion.toDartHtmlElementList(list);