flutter 实现多布局列表的示例代码
闲来无事,写个玩安卓的首页,实现多布局、banner的效果。其中涉及知识点侧滑,pageview切换页面,页面跳转传值及回调数据(在侧滑里)。这些都是基于自己学习做的demo。
当然还有很多瑕疵需要完善。
先看效果:
这里主要讲解多布局,所以其他功能可以参考github
https://github.com/chentaishan/flutter_app
多布局功能代码:
@override
voidinitState(){
//TODO:implementinitState
super.initState();
//获取网络数据一个banner一个列表
initBannerData();
initHomeList();
}
@override
Widgetbuild(BuildContextcontext){
WidgetitemColor=Divider(
color:Colors.blue,
);
WidgetnullColor=Divider(
color:Colors.white,
);
returnListView.separated(
itemCount:_homeListBeanEntity.data.datas.length,
itemBuilder:(BuildContextcontext,intindex){
//根据规则,抽取banner方法和listitem
return_bannerBeanData!=null&&_bannerBeanData.data.length>0&&index==0
?bannerItem(_bannerBeanData)
:listItem(_homeListBeanEntity,index);
},
separatorBuilder:(BuildContextcontext,intindex){
returnindex>0?itemColor:nullColor;
},
);
}
voidinitBannerData()async{
result=awaitgetNetWorkData("https://www.wanandroid.com/banner/json");
print("list="+result);
if(result.toString().length>0){
BannerBeanEntitybannerBeanEntity=
BannerBeanEntity.fromJson(json.decode(result));
if(bannerBeanEntity!=null){
setState((){
_bannerBeanData=bannerBeanEntity;
});
}
}
}
getNetWorkData(Stringurl)async{
varuri=Uri.parse(url);
HttpClienthttpClient=newHttpClient();
HttpClientRequestrequest=awaithttpClient.getUrl(uri);
HttpClientResponsehttpClientResponse=awaitrequest.close();
varstr=awaithttpClientResponse.transform(utf8.decoder).join();
print(httpClientResponse.toString());
returnstr;
}
voidinitHomeList()async{
result=awaitgetNetWorkData("https://www.wanandroid.com/article/list/0/json");
print("list="+result);
if(result.toString().length>0){
HomeListBeanEntityhomeListBeanEntity=
HomeListBeanEntity.fromJson(json.decode(result));
if(homeListBeanEntity!=null){
setState((){
_homeListBeanEntity=homeListBeanEntity;
});
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。