我有一个flutter web应用程序,在本地工作,但部署后使用
firebase deploy
如果网站上没有显示图像,我已经通过追踪检查了资产是否已上传,例如my_app.firebaseapp.com/assets/assets/card.jpg.(图像在那里,所以它已经正确上传,但由于某种原因,它没有显示在主页上)。
网址:https://websitehostingtry.web.app/#/
https://websitehostingtry.web.app/assets/images/card.jpg
在本地运行相同的:
flutter run -d chrome --release
我的Pubspec.yaml文件:
name: website_try
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- images/
在我的 dart 代码中,我只是改变了默认代码,在计数器后添加图像...
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
Expanded(
child: Image.network('assets/images/card.jpg'),
)
],
),
),
3条答案
按热度按时间h43kikqp1#
我检查了你分享的页面,这是你部署到任何托管服务时的典型问题之一。它通常是由您访问图像的方式引起的。
您的一个网络请求URL在实时页面中看起来像这样。你可以在chrome的开发者工具中检查这一点。
https://websitehostingtry.web.app/assets/card.jpg
当我检查
flutter_service_worker.js
时,它显示了以下资产所在的列表。根据我的分析,我猜在你的代码中,你可能指的是如下的图像。
或
这将从根域Map,因此它查找https://websitehostingtry.web.app/assets/card.jpg。
因此,一种方法是删除路径中
assets
之前的附加正斜杠。用于例如或者如果你喜欢
Image.network
,那么下面就可以了。另一种更清晰的方法是创建一个新的目录images,并将card.jpg放在旁边,这样就可以清楚地看到里面的内容。
基本原理是按内容类型命名文件夹,以便于说明。
将
pubspec.yaml
更改为然后将您的代码更改为以下内容。
或
希望这能帮上忙。
fcipmucu2#
问题:
pubspec.yaml
最初,我在Flutter应用程序中加载了一个图像
Web应用程序将图像完美地加载到localhost上。但是,当我在Firebase主机上部署Web应用程序时,一切都很好,除了图像不加载!
解决方案:
我检查了Firebase托管部署
在终端中,我搜索了
banner.png
,发现图像已经上传,但正在通过不同的路径访问!因此,在加载映像时,我通过在前面添加
assets/
来更改访问路径,如下所示现在,它在localhost上加载图像,并从Firebase托管,一样!
kd3sttzy3#
pubspec.yaml
请记住,当您处于调试模式时,必须执行此操作
但是当web应用被部署时,它应该这样写:
您必须在资产路径前添加一个额外的 assets/,以便在部署时可以正常工作
所以使用这种方法:
import 'package:flutter/foundation.dart';
String releasePath = kDebugMode ? '' : 'assets/';
Image.network('${releasePath}assets/images/pic.jpeg')
你们都可以走了