- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
沈阳师范大学科信软件学院
实 验 报 告
实验题目: 移动增值业务开发(期末综合作业)
实验时间: 2022.5.28
姓 名: 匡展锐
学 号:
专业年级: 2019级网络工程
实验的灵感来自于网络flutter教程的教学,在作者的教学中学习了很多相关知识,包括一些图片素材的来源也来自于网络视频教程,并根据视频仿作了一款类似的软件,下面是我的实验思路:
1.1 本地资源配置
在项目根目录下的?pubspec.yaml?文件引入本地资源
第三方包
1.2 页面缓存
底部bottomNavigationBar页面缓存
类似于常用的 app 都有底部的切换功能,如图所示:
使用了组件 IndexedStack,,它可以页面切换时不会去销毁或替换当前页,而是层叠在一起。
TabBar 切换页面缓存
切换 tabbar 时,print 不会打印,实现了页面保持状态。
1.3 主题配置
在lib目录下新建config的文件下
常用Colors
config下新建 app_colors.dart文件。
主题样式
config下新建 app_thumb.dart文件。
1.4网络请求封装
网络请求采用了 dio库,在 pubspec.yaml 文件中注册并保存。
dependencies:
# http请求库
dio: ^4.0.0
在lib目录下新建http 与 config的目录
以下封装搬自: /post/6844904190838325262
请求配置参数
config目录新建 http_options.dart文件
因为项目是在模拟器中运行,所以请求的地址不能是域名形式。模拟器的不管localhost还是 都是它本机的,它也是操作系统。这时候模拟器的请求地址是我们本机的地址,也就是我们 cmd终端中运行 ipconfig后看到的IPv4地址:
请求异常处理
http目录下新建 http_exception.dart文件
拦截器
http目录下新建 http_interceptor.dart文件
请求单例类
http目录下新建 http_request.dart文件
请求静态化
http目录下新建 http.dart文件,我们将 HttpRequest 类包状态静态类,方便调用。
1.5编写用户与歌曲数据
用户模型层
每个页面或每个模型都会有返回用户信息,在lib目录下新建models文件,再创建user_model.dart文件
import 'package:flutter/cupertino.dart';
/// 用户列表模型
class UserList {
/// 包含 UserItem 模型的集合
List<UserItem> list;
UserList(this.list);
/// 循环后台返回的数组 将每一项组装成 UserItem
factory UserList.fromJson(List<dynamic> list) {
return UserList(
list.map((item) => UserItem.fromJson(item)).toList(),
);
}
}
/// 用户列表项/用户详情模型
class UserItem {
final int id;
final String coverPictureUrl;
final String nickname;
final String type;
final int musicCount;
final int musicPlayCount;
UserItem({
@required this.id,
@required this.coverPictureUrl,
@required this.nickname,
@required this.type,
@required this.musicCount,
@required this.musicPlayCount,
});
/// 将 Json 数据转换为实体模型
factory UserItem.fromJson(dynamic item) {
return UserItem(
id: item['id'
文档评论(0)