Commit 71a0364e authored by 何碧荣's avatar 何碧荣

发现页

parent 070cfffe
......@@ -13,8 +13,8 @@ class FindModel extends BaseModel{
FindModel(this.page, this.count);
init(BuildContext context){
getFindPage(page,count);
init(BuildContext context,[callback=null]){
getFindPage(page,count,callback);
}
getFindPage(page,count,[callback]){
......
import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
......@@ -5,6 +7,9 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gmalpha_flutter/FindModel/page/FindModel.dart';
import 'package:gmalpha_flutter/FindModel/service/remote/entity/FindEntity.dart';
import 'package:gmalpha_flutter/NewMessageModel/page/messagePage/common.dart';
import 'package:gmalpha_flutter/NewMessageModel/page/messagePage/common.dart'
as prefix0;
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart';
import 'package:gmalpha_flutter/commonModel/base/BasePage.dart';
import 'package:gmalpha_flutter/res/value/ALColors.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
......@@ -26,7 +31,9 @@ class _FindPageState extends BasePage<FindPage> {
static int count = 8;
static int page = 1;
RefreshController _refreshController = RefreshController(initialRefresh: false);
RefreshController _refreshController =
RefreshController(initialRefresh: false);
_FindPageState(this._findModel);
@override
......@@ -35,64 +42,80 @@ class _FindPageState extends BasePage<FindPage> {
..init(context);
return Scaffold(
appBar: AppBar(
leading: GestureDetector(
child: Center(
child: Container(
padding: EdgeInsets.fromLTRB(12, 0, 0, 0),
child: Text("发现"),
),
)),
centerTitle: false,
leading: messageTitle('发现'),
elevation: 0,
backgroundColor: ALColors.ColorFFFFFF,
actions: <Widget>[
Container(
padding: EdgeInsets.only(right: 16),
child: new Icon(Icons.search , size: 24.0,),
),
],
),
body: SmartRefresher(
enablePullDown: true,
enablePullUp: true,
header: WaterDropHeader(),
footer: CustomFooter(
builder: (BuildContext context,LoadStatus mode){
Widget body ;
if(mode==LoadStatus.idle){
builder: (BuildContext context, LoadStatus mode) {
Widget body;
if (mode == LoadStatus.idle) {
body = Text("上拉加载");
}
else if(mode==LoadStatus.loading){
} else if (mode == LoadStatus.loading) {
body = CupertinoActivityIndicator();
}
else if(mode == LoadStatus.failed){
} else if (mode == LoadStatus.failed) {
body = Text("加载失败!点击重试!");
}
else if(mode == LoadStatus.canLoading){
} else if (mode == LoadStatus.canLoading) {
body = Text("松手,加载更多!");
}
else{
} else {
body = Text("没有更多数据了!");
}
return Container(
height: 55.0,
child: Center(child:body),
child: Center(child: body),
);
},
),
controller: _refreshController,
onRefresh: _onRefresh,
onLoading: _onLoading,
child: getListView(),
));
child: CustomScrollView(
slivers: <Widget>[
// SliverToBoxAdapter(
// child: Container(height: 1,
// color: Colors.amberAccent,),
// ),
getListView(),
],
)));
}
void _onRefresh() async{
_findModel.init(context);
await Future.delayed(Duration(milliseconds: 1000));
_refreshController.loadComplete();
void _onRefresh() {
_findModel.init(context, (value) {
Timer(Duration(seconds: 1), () {
_refreshController.refreshToIdle();
});
});
}
void _onLoading() async {
page++;
await _findModel.getFindPage(page, count, (data) {
if(data.data?.cards?.length == 0) {
if (data.data?.cards?.length == 0) {
_refreshController.loadNoData();
} else {
page++;
_refreshController.loadComplete();
}
});
}
Widget _listViewUI2(BuildContext context,Cards item) {
Widget _listViewUI2(BuildContext context, Cards item) {
return Container(
width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
......@@ -101,7 +124,8 @@ class _FindPageState extends BasePage<FindPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
margin:
EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
child: CachedNetworkImage(
imageUrl: '${item.topics[0].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
......@@ -109,7 +133,8 @@ class _FindPageState extends BasePage<FindPage> {
fit: BoxFit.cover,
)),
Container(
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
margin:
EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
child: CachedNetworkImage(
imageUrl: '${item.topics[1].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
......@@ -123,12 +148,10 @@ class _FindPageState extends BasePage<FindPage> {
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)),
]
)
);
]));
}
Widget _listViewUI1(BuildContext context,Cards item) {
Widget _listViewUI1(BuildContext context, Cards item) {
return Container(
width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
......@@ -137,26 +160,26 @@ class _FindPageState extends BasePage<FindPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
margin:
EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
child: CachedNetworkImage(
imageUrl: '${item.topics[0].imageUrl}',
width: ScreenUtil.instance.setWidth(249),
height: ScreenUtil.instance.setHeight(249),
fit: BoxFit.fitHeight,
)
),
)),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3.0)),
margin: EdgeInsets.only(
bottom: ScreenUtil.instance.setHeight(3.0)),
child: CachedNetworkImage(
imageUrl: '${item.topics[1].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)
),
)),
Container(
child: CachedNetworkImage(
imageUrl: '${item.topics[2].imageUrl}',
......@@ -164,14 +187,11 @@ class _FindPageState extends BasePage<FindPage> {
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)),
]
),
]
)
);
]),
]));
}
Widget _listViewUI3(BuildContext context,Cards item) {
Widget _listViewUI3(BuildContext context, Cards item) {
return Container(
width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
......@@ -183,7 +203,8 @@ class _FindPageState extends BasePage<FindPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
margin: EdgeInsets.only(
bottom: ScreenUtil.instance.setHeight(3)),
child: CachedNetworkImage(
imageUrl: '${item.topics[0].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
......@@ -197,20 +218,38 @@ class _FindPageState extends BasePage<FindPage> {
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)),
]
),
]),
Container(
margin: EdgeInsets.only(left: ScreenUtil.instance.setWidth(3.0)),
margin:
EdgeInsets.only(left: ScreenUtil.instance.setWidth(3.0)),
child: CachedNetworkImage(
imageUrl: '${item.topics[2].imageUrl}',
width: ScreenUtil.instance.setWidth(249),
height: ScreenUtil.instance.setHeight(249),
fit: BoxFit.cover,
)),
]
]));
}
Widget loadingItem() {
Widget loadCircle = Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.only(top: 60.0),
child: CircularProgressIndicator(),
),
Padding(
padding: EdgeInsets.only(
left: ScreenUtil.instance.setSp(10),
right: ScreenUtil.instance.setSp(10),
top: ScreenUtil.instance.setSp(10),
bottom: ScreenUtil.instance.setSp(10)),
child: Text('加载中...'),
)
],
);
return SliverFillViewport(delegate: SliverChildListDelegate([loadCircle]));
}
Widget getListView() {
......@@ -219,32 +258,32 @@ class _FindPageState extends BasePage<FindPage> {
initialData: _findModel.findLive.data,
builder: (BuildContext context, data) {
var dataList = data?.data?.data;
if(dataList == null) {
return noData();
if (dataList == null) {
return loadingItem();
}
return ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
var item = dataList.cards[index];
if(item.layout == 1){
if (item.layout == 1) {
return _listViewUI1(context, item);
}
else if(item.layout == 2){
} else if (item.layout == 2) {
return _listViewUI2(context, item);
}
else{
} else {
return _listViewUI3(context, item);
}
},
itemCount: dataList.cards.length,
);
}
);
childCount: dataList.cards.length,
));
});
}
Widget noData() {
return Container();
return Container(
height: double.maxFinite,
width: double.maxFinite,
color: Colors.amberAccent,
);
}
@override
......@@ -263,11 +302,9 @@ class _FindPageState extends BasePage<FindPage> {
return widget.fromPage;
}
@override
void initState() {
super.initState();
_findModel.init(context);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment