Все активы хранятся в каталоге assets
во Flutter Web, что означает, что актив изображения будет храниться в Интернете следующим образом:
assets
assets
image.png
index.html
...
С этим знанием мы можем создать виджет, который обрабатывает поведение как для мобильных устройств, так и для веб-сайтов.
Обратите внимание, что мы можем использовать Image.network
в Интернете, поскольку по умолчанию к изображениям обращаются через сеть в Интернете (так работает веб в целом). Путь будет yourdomain.com/assets/assets/image.png
.
class PlatformAwareAssetImage extends StatelessWidget {
const PlatformAwareAssetImage({
Key key,
this.asset,
this.package,
}) : super(key: key);
final String asset;
final String package;
@override
Widget build(BuildContext context) {
if (kIsWeb) {
return Image.network(
'assets/${package == null ? '' : 'packages/$package/'}$asset',
);
}
return Image.asset(
asset,
package: package,
);
}
}
Потенциально, это будет изменено в будущих версиях Flutter - это состояние вещей с v1.18.0-6.0.pre.82
.