这篇文章主要介绍了flutter 实现多布局列表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
闲来无事,写个玩安卓的首页,实现多布局、banner的效果。其中涉及知识点侧滑,pageview 切换页面,页面跳转传值及回调数据(在侧滑里)。这些都是基于自己学习做的demo。
当然还有很多瑕疵需要完善。
先看效果:
@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;
});
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:flutter 实现多布局列表的示例代码
猜你喜欢
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Flutter实现底部和顶部导航栏 2022-08-31
- 详解flutter engine 那些没被释放的东西 2022-12-04
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android实现轮询的三种方式 2023-02-17
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android studio实现动态背景页面 2023-05-23
- Android实现监听音量的变化 2023-03-30
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
