flutter 实现多布局列表的示例代码
时间:2022-07-27
本文章向大家介绍flutter 实现多布局列表的示例代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
闲来无事,写个玩安卓的首页,实现多布局、banner的效果。其中涉及知识点侧滑,pageview 切换页面,页面跳转传值及回调数据(在侧滑里)。这些都是基于自己学习做的demo。 当然还有很多瑕疵需要完善。
先看效果:
这里主要讲解多布局,所以其他功能可以参考github https://github.com/chentaishan/flutter_app
多布局功能代码:
@override
void initState() {
// TODO: implement initState
super.initState();
// 获取网络数据 一个banner 一个列表
initBannerData();
initHomeList();
}
@override
Widget build(BuildContext context) {
Widget itemColor = Divider(
color: Colors.blue,
);
Widget nullColor = Divider(
color: Colors.white,
);
return ListView.separated(
itemCount: _homeListBeanEntity.data.datas.length,
itemBuilder: (BuildContext context, int index) {
// 根据规则,抽取banner方法和listitem
return _bannerBeanData != null && _bannerBeanData.data.length 0&&index==0
? bannerItem(_bannerBeanData)
: listItem(_homeListBeanEntity, index);
},
separatorBuilder: (BuildContext context, int index) {
return index 0 ? itemColor : nullColor;
},
);
}
void initBannerData() async {
result = await getNetWorkData("https://www.wanandroid.com/banner/json");
print("list=" + result);
if (result.toString().length 0) {
BannerBeanEntity bannerBeanEntity =
BannerBeanEntity.fromJson(json.decode(result));
if (bannerBeanEntity != null) {
setState(() {
_bannerBeanData = bannerBeanEntity;
});
}
}
}
getNetWorkData(String url) async {
var uri = Uri.parse(url);
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.getUrl(uri);
HttpClientResponse httpClientResponse = await request.close();
var str = await httpClientResponse.transform(utf8.decoder).join();
print(httpClientResponse.toString());
return str;
}
void initHomeList() async {
result =await getNetWorkData("https://www.wanandroid.com/article/list/0/json");
print("list=" + result);
if (result.toString().length 0) {
HomeListBeanEntity homeListBeanEntity =
HomeListBeanEntity.fromJson(json.decode(result));
if (homeListBeanEntity != null) {
setState(() {
_homeListBeanEntity = homeListBeanEntity;
});
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 再下一城,腾讯黑科技介入新零售
- 微信团队广发内部体验邀请,小程序将大火!
- 胖虎科技获1亿元融资 域名“我爱胖虎”创意十足!
- 高挺:区块链在金融领域的三个应用方向
- 条码支付迎来分级限额制 支付宝、微信纷纷响应
- 关键基础设施威胁预警,HDD声波攻击可致蓝屏
- 集成学习之随机森林通俗理解
- 深度学习CNN眼中的图片是什么样的
- 第七节 关联映射之多对多
- 词向量fasttext,CNN is All,强化学习,自回归生成模型,可视化神经网络损失函数
- 比特币开始执行比特币支付协议发票减少钱包的支持
- Spring编程式事务处理不当引起的连接泄露事件
- Genaro在硅谷区块链孵化器开幕式上提出愿景
- 支付宝微信回应央行新规:继续探索条码支付新技术!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 动态规划算法练习(4)--medium
- Python基础面向对象-其他
- Python基础之面向对象基础知识
- Python基础之文件操作知识
- 前端|利用js实现在日历中的签到效果
- Python基础之函数加强
- Python基础之函数二
- 前端|动态发光按钮
- Windows系统命令拼接
- 利用Hexo打造属于自己的网页版简历
- RCE远程控制Windows服务器——以win10虚拟机为例
- 解决InnoDB: Table mysql/innodb_index_stats has length mismatch
- R语言中对文本数据进行主题模型topic modeling分析
- QT学习第3天:QSlider使用方法
- qt学习第2天:QRadioButtonTest+ButtonGroup单选后提示消息,QComBox