欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > flutter开发实战-flutter build web发布到github page及图片未显示问题

flutter开发实战-flutter build web发布到github page及图片未显示问题

2025/10/5 22:59:50 来源:https://blog.csdn.net/gloryFlow/article/details/140806396  浏览:    关键词:flutter开发实战-flutter build web发布到github page及图片未显示问题

flutter开发实战-flutter build web发布到github page及图片未显示问题

GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。

项目地址:

https://goodbruce.github.io/

在这里插入图片描述

一、编写flutter代码

这里使用的是Android studio创建项目。创建选择web,如图所示
在这里插入图片描述

列表数据

// 内容数据
class ContentSetting {static SubBarItem getSideBarItem() {SubBarItem item1 = SubBarItem();item1.name = "BruceGwo";item1.desc = "iOS开发者、flutter开发、Javascript兼有学习Cocos creator游戏开发。积极主动,做好学习规划,探索未知的可能。";item1.imageName = "ic_avatar.jpg";item1.bottomDesc = "联系我lansidream#foxmail.com(#换成@)";return item1;}static List<ContentItem> getContentItems() {List<ContentItem> items = [];ContentItem item1 = ContentItem();item1.name = "全民保卫地球";item1.desc = "全民保卫地球,我们一起来Go";item1.imageName = "img_qmbwdq.png";items.add(item1);ContentItem item1_2 = ContentItem();item1_2.name = "消灭怪怪兽";item1_2.desc = "消灭怪怪兽,拖动飞机消灭怪兽";item1_2.imageName = "img_xmggs.jpg";items.add(item1_2);ContentItem item2 = ContentItem();item2.name = "小绳套牛";item2.desc = "开心套牛,小绳套牛,小绳大力度";item2.imageName = "img_xstn.jpg";items.add(item2);ContentItem item3 = ContentItem();item3.name = "战机长空";item3.desc = "好玩刺激空中大战,打飞机游戏";item3.imageName = "img_zjck.jpg";items.add(item3);ContentItem item1_1 = ContentItem();item1_1.name = "开心星星乐";item1_1.desc = "开心星星乐,消除星星,有趣";item1_1.imageName = "img_kxxxl.jpg";items.add(item1_1);return items;}
}

展示listview列表

 import 'package:flutter/material.dart';
import 'package:flutter_web/content/content_setting.dart';
import 'package:flutter_web/widget/main_content_card.dart';class MainContent extends StatefulWidget {const MainContent({super.key,this.width,this.height,});final double? width;final double? height;@overrideState<MainContent> createState() => _MainContentState();
}class _MainContentState extends State<MainContent> {@overrideWidget build(BuildContext context) {return Container(width: widget.width,height: widget.height,padding: const EdgeInsets.only(left: 10, right: 10, top: 5, bottom: 10),decoration: BoxDecoration(color: Color(0xFFF7F7F7),border: Border.all(color: Color(0xFFf0f0f0),width: 1,style: BorderStyle.solid,),),child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [Container(margin: const EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 0),height: 50,width: widget.width,alignment: Alignment.center,child: Text("玩玩小游戏吧",textAlign: TextAlign.left,maxLines: 1,overflow: TextOverflow.ellipsis,softWrap: true,style: const TextStyle(fontSize: 16,fontWeight: FontWeight.w600,fontStyle: FontStyle.normal,color: Color(0xFF101216),decoration: TextDecoration.none,),),),Expanded(child: ListView.builder(padding: EdgeInsets.symmetric(vertical: 15.0, horizontal: 10.0),addRepaintBoundaries: false,addAutomaticKeepAlives: false,itemCount: ContentSetting.getContentItems().length,itemBuilder: (context, index) {ContentItem item = ContentSetting.getContentItems()[index];return MainContentCard(imageName: item.imageName ?? "",name: item.name,desc: item.desc,sImageNames: item.sImageNames ?? [],);},),),],));}
}

列表每一项展示的widget

import 'package:flutter/material.dart';class MainContentCard extends StatelessWidget {const MainContentCard({super.key,this.isSelected = false,required this.imageName,this.name = "",this.desc = "",this.sImageNames,});final bool? isSelected;final String imageName;final String? name;final String? desc;final List<String>? sImageNames;@overrideWidget build(BuildContext context) {return Container(margin: const EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 10),padding: const EdgeInsets.only(left: 10, right: 10, top: 15, bottom: 10),decoration: BoxDecoration(color: (true == isSelected) ? Color(0xFFEDF0F8) : Colors.white,borderRadius: const BorderRadius.all(Radius.circular(6),),boxShadow: const [BoxShadow(color: Color(0xFFf0f0f0),offset: Offset(5, 5),blurRadius: 10,),BoxShadow(color: Color(0xFFf0f0f0),offset: Offset(-5, -5),blurRadius: 10,),],),child: Column(mainAxisAlignment: MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.center,children: [ClipRRect(borderRadius: const BorderRadius.all(Radius.circular(2),),clipBehavior: Clip.hardEdge,child: Image.asset("images/${imageName}",width: 543.0,height: 200.0,fit: BoxFit.fill,),),const SizedBox(width: 15,),Container(height: 100,child: Column(mainAxisAlignment: MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.start,children: [const Expanded(child: SizedBox(),),Text(name ?? "",textAlign: TextAlign.left,maxLines: 1,overflow: TextOverflow.ellipsis,softWrap: true,style: const TextStyle(fontSize: 15,fontWeight: FontWeight.w600,fontStyle: FontStyle.normal,color: Color(0xFF101216),decoration: TextDecoration.none,),),const SizedBox(height: 15,),Text(desc ?? "",textAlign: TextAlign.left,maxLines: 1,overflow: TextOverflow.ellipsis,softWrap: true,style: const TextStyle(fontSize: 14,fontWeight: FontWeight.w400,fontStyle: FontStyle.normal,color: Color(0xFFa0a2a6),decoration: TextDecoration.none,),),const Expanded(child: SizedBox(),),],),),],),);}
}

二、flutter build web

完成代码后,可以通过以下命令进行build web

 flutter build web--web-renderer html

命令执行后,将在build文件夹中有一个web文件夹。该web文件夹内即为build后的web项目。通过git将该web文件夹内上传到github pages。

三、上传github pages后,图片不显示

由于在flutter build后的web文件夹的assets目录下没有工程使用的本地文件夹。
通过打开github,打开Chrome检查,可以看到控制台,获取图片错误提醒。
如下图所示:
在这里插入图片描述

在图中的我们可以看到,工程使用的图未在build后的web文件夹的assets目录下。我们需要将工程中的assets的images复制到build后的web文件夹的assets目录下,再将其上传至github pages上。上传后等待几分钟,再打开github pages项目即可正常浏览。

效果图如下:

在这里插入图片描述

github pages项目地址:https://goodbruce.github.io/

四、小结

flutter开发实战-flutter build web发布到github page及图片未显示问题

学习记录,每天不停进步。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词