Я создаю приложение Flutter, которое пытаюсь заставить работать в Интернете. Часть его содержит некоторый веб-код c code:
import 'dart:html' as html;
import 'package:flutter/foundation.dart';
class DownloadViewModel extends ChangeNotifier {
static const String url = 'https://example.com/api/v1/app/myapp_1.0.0.apk';
void onAndroidDownloadPressed() {
html.window.open(url, 'AndroidApp');
}
}
Однако импорт dart:html
выдает следующую ошибку:
Избегайте использования библиотек только для веб-сайтов вне Flutter web пакеты плагинов
Более длинная версия предупреждения выглядит следующим образом:
Избегайте использования веб-библиотек, dart:html
, dart:js
и dart:js_util
в пакетах Flutter, которые не являются веб-плагинами. Эти библиотеки не поддерживаются вне веб-контекста; функциональность, которая зависит от них, не будет работать во время выполнения в Flutter mobile, и их использование обычно не рекомендуется в Flutter web.
Доступ к веб-библиотеке разрешен в:
plugin packages that declare web as a supported context
в противном случае, импорт dart:html
, dart:js
и dart:js_util
не разрешены.
И это не просто предупреждение. Это фактически предотвращает создание приложения Android или iOS (даже если этот метод недоступен из приложений, не относящихся к Web-флаттеру).
Единственное решение, которое я нашел, - закомментировать импорт когда я создаю для Android и iOS, а затем раскомментирую его, когда я строю для Интернета. Есть ли лучшее решение?