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

发现页

parent 070cfffe
...@@ -13,8 +13,8 @@ class FindModel extends BaseModel{ ...@@ -13,8 +13,8 @@ class FindModel extends BaseModel{
FindModel(this.page, this.count); FindModel(this.page, this.count);
init(BuildContext context){ init(BuildContext context,[callback=null]){
getFindPage(page,count); getFindPage(page,count,callback);
} }
getFindPage(page,count,[callback]){ getFindPage(page,count,[callback]){
......
import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -5,6 +7,9 @@ import 'package:flutter_screenutil/flutter_screenutil.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/page/FindModel.dart';
import 'package:gmalpha_flutter/FindModel/service/remote/entity/FindEntity.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';
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/commonModel/base/BasePage.dart';
import 'package:gmalpha_flutter/res/value/ALColors.dart'; import 'package:gmalpha_flutter/res/value/ALColors.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
...@@ -26,7 +31,9 @@ class _FindPageState extends BasePage<FindPage> { ...@@ -26,7 +31,9 @@ class _FindPageState extends BasePage<FindPage> {
static int count = 8; static int count = 8;
static int page = 1; static int page = 1;
RefreshController _refreshController = RefreshController(initialRefresh: false); RefreshController _refreshController =
RefreshController(initialRefresh: false);
_FindPageState(this._findModel); _FindPageState(this._findModel);
@override @override
...@@ -35,216 +42,248 @@ class _FindPageState extends BasePage<FindPage> { ...@@ -35,216 +42,248 @@ class _FindPageState extends BasePage<FindPage> {
..init(context); ..init(context);
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: GestureDetector(
child: Center(
child: Container(
padding: EdgeInsets.fromLTRB(12, 0, 0, 0),
child: Text("发现"),
),
)),
centerTitle: false, centerTitle: false,
leading: messageTitle('发现'),
elevation: 0,
backgroundColor: ALColors.ColorFFFFFF, backgroundColor: ALColors.ColorFFFFFF,
actions: <Widget>[
Container(
padding: EdgeInsets.only(right: 16),
child: new Icon(Icons.search , size: 24.0,),
),
],
), ),
body: SmartRefresher( body: SmartRefresher(
enablePullDown: true, enablePullDown: true,
enablePullUp: true, enablePullUp: true,
header: WaterDropHeader(), header: WaterDropHeader(),
footer: CustomFooter( footer: CustomFooter(
builder: (BuildContext context,LoadStatus mode){ builder: (BuildContext context, LoadStatus mode) {
Widget body ; Widget body;
if(mode==LoadStatus.idle){ if (mode == LoadStatus.idle) {
body = Text("上拉加载"); body = Text("上拉加载");
} } else if (mode == LoadStatus.loading) {
else if(mode==LoadStatus.loading){ body = CupertinoActivityIndicator();
body = CupertinoActivityIndicator(); } else if (mode == LoadStatus.failed) {
} body = Text("加载失败!点击重试!");
else if(mode == LoadStatus.failed){ } else if (mode == LoadStatus.canLoading) {
body = Text("加载失败!点击重试!"); body = Text("松手,加载更多!");
} } else {
else if(mode == LoadStatus.canLoading){ body = Text("没有更多数据了!");
body = Text("松手,加载更多!"); }
} return Container(
else{ height: 55.0,
body = Text("没有更多数据了!"); child: Center(child: body),
} );
return Container( },
height: 55.0, ),
child: Center(child:body), controller: _refreshController,
); onRefresh: _onRefresh,
}, onLoading: _onLoading,
), child: CustomScrollView(
controller: _refreshController, slivers: <Widget>[
onRefresh: _onRefresh, // SliverToBoxAdapter(
onLoading: _onLoading, // child: Container(height: 1,
child: getListView(), // color: Colors.amberAccent,),
)); // ),
getListView(),
],
)));
} }
void _onRefresh() async{ void _onRefresh() {
_findModel.init(context); _findModel.init(context, (value) {
await Future.delayed(Duration(milliseconds: 1000)); Timer(Duration(seconds: 1), () {
_refreshController.loadComplete(); _refreshController.refreshToIdle();
});
});
} }
void _onLoading() async { void _onLoading() async {
page++;
await _findModel.getFindPage(page, count, (data) { await _findModel.getFindPage(page, count, (data) {
if(data.data?.cards?.length == 0) { if (data.data?.cards?.length == 0) {
_refreshController.loadNoData(); _refreshController.loadNoData();
} else { } else {
page++;
_refreshController.loadComplete(); _refreshController.loadComplete();
} }
}); });
} }
Widget _listViewUI2(BuildContext context,Cards item) { Widget _listViewUI2(BuildContext context, Cards item) {
return Container( return Container(
width: ScreenUtil.instance.setWidth(375.0), width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)), margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)), margin:
child: CachedNetworkImage( EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
imageUrl: '${item.topics[0].imageUrl}', child: CachedNetworkImage(
width: ScreenUtil.instance.setWidth(123), imageUrl: '${item.topics[0].imageUrl}',
height: ScreenUtil.instance.setHeight(123), width: ScreenUtil.instance.setWidth(123),
fit: BoxFit.cover, height: ScreenUtil.instance.setHeight(123),
)), fit: BoxFit.cover,
Container( )),
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)), Container(
child: CachedNetworkImage( margin:
imageUrl: '${item.topics[1].imageUrl}', EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
width: ScreenUtil.instance.setWidth(123), child: CachedNetworkImage(
height: ScreenUtil.instance.setHeight(123), imageUrl: '${item.topics[1].imageUrl}',
fit: BoxFit.cover, width: ScreenUtil.instance.setWidth(123),
)), height: ScreenUtil.instance.setHeight(123),
Container( fit: BoxFit.cover,
child: CachedNetworkImage( )),
Container(
child: CachedNetworkImage(
imageUrl: '${item.topics[2].imageUrl}', imageUrl: '${item.topics[2].imageUrl}',
width: ScreenUtil.instance.setWidth(123), width: ScreenUtil.instance.setWidth(123),
height: ScreenUtil.instance.setHeight(123), height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover, fit: BoxFit.cover,
)), )),
] ]));
)
);
} }
Widget _listViewUI1(BuildContext context,Cards item) { Widget _listViewUI1(BuildContext context, Cards item) {
return Container( return Container(
width: ScreenUtil.instance.setWidth(375.0), width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)), margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)), margin:
child: CachedNetworkImage( EdgeInsets.only(right: ScreenUtil.instance.setWidth(3.0)),
imageUrl: '${item.topics[0].imageUrl}', child: CachedNetworkImage(
width: ScreenUtil.instance.setWidth(249), imageUrl: '${item.topics[0].imageUrl}',
height: ScreenUtil.instance.setHeight(249), width: ScreenUtil.instance.setWidth(249),
fit: BoxFit.fitHeight, height: ScreenUtil.instance.setHeight(249),
) fit: BoxFit.fitHeight,
), )),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3.0)), margin: EdgeInsets.only(
child: CachedNetworkImage( bottom: ScreenUtil.instance.setHeight(3.0)),
imageUrl: '${item.topics[1].imageUrl}', 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}',
width: ScreenUtil.instance.setWidth(123), width: ScreenUtil.instance.setWidth(123),
height: ScreenUtil.instance.setHeight(123), height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover, fit: BoxFit.cover,
) )),
), ]),
Container( ]));
child: CachedNetworkImage(
imageUrl: '${item.topics[2].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)),
]
),
]
)
);
} }
Widget _listViewUI3(BuildContext context,Cards item) { Widget _listViewUI3(BuildContext context, Cards item) {
return Container( return Container(
width: ScreenUtil.instance.setWidth(375.0), width: ScreenUtil.instance.setWidth(375.0),
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)), margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container(
margin: EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(3)),
child: CachedNetworkImage(
imageUrl: '${item.topics[0].imageUrl}',
width: ScreenUtil.instance.setWidth(123),
height: ScreenUtil.instance.setHeight(123),
fit: BoxFit.cover,
)),
Container( Container(
child: CachedNetworkImage( margin: EdgeInsets.only(
imageUrl: '${item.topics[1].imageUrl}', bottom: ScreenUtil.instance.setHeight(3)),
width: ScreenUtil.instance.setWidth(123), child: CachedNetworkImage(
height: ScreenUtil.instance.setHeight(123), imageUrl: '${item.topics[0].imageUrl}',
fit: BoxFit.cover, width: ScreenUtil.instance.setWidth(123),
)), height: ScreenUtil.instance.setHeight(123),
] fit: BoxFit.cover,
), )),
Container(
Container( child: CachedNetworkImage(
margin: EdgeInsets.only(left: ScreenUtil.instance.setWidth(3.0)), imageUrl: '${item.topics[1].imageUrl}',
child: CachedNetworkImage( width: ScreenUtil.instance.setWidth(123),
imageUrl: '${item.topics[2].imageUrl}', height: ScreenUtil.instance.setHeight(123),
width: ScreenUtil.instance.setWidth(249), fit: BoxFit.cover,
height: ScreenUtil.instance.setHeight(249), )),
fit: BoxFit.cover, ]),
)), Container(
] 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() { Widget getListView() {
return StreamBuilder<FindEntity>( return StreamBuilder<FindEntity>(
stream: _findModel.findLive.stream, stream: _findModel.findLive.stream,
initialData: _findModel.findLive.data, initialData: _findModel.findLive.data,
builder: (BuildContext context, data) { builder: (BuildContext context, data) {
var dataList = data?.data?.data; var dataList = data?.data?.data;
if(dataList == null) { if (dataList == null) {
return noData(); return loadingItem();
} }
return ListView.builder( return SliverList(
shrinkWrap: true, delegate: SliverChildBuilderDelegate(
physics: NeverScrollableScrollPhysics(), (BuildContext context, int index) {
itemBuilder: (context, index) { var item = dataList.cards[index];
var item = dataList.cards[index]; if (item.layout == 1) {
if(item.layout == 1){ return _listViewUI1(context, item);
return _listViewUI1(context, item); } else if (item.layout == 2) {
} return _listViewUI2(context, item);
else if(item.layout == 2){ } else {
return _listViewUI2(context, item); return _listViewUI3(context, item);
} }
else{ },
return _listViewUI3(context, item); childCount: dataList.cards.length,
} ));
}, });
itemCount: dataList.cards.length,
);
}
);
} }
Widget noData() { Widget noData() {
return Container(); return Container(
height: double.maxFinite,
width: double.maxFinite,
color: Colors.amberAccent,
);
} }
@override @override
...@@ -263,11 +302,9 @@ class _FindPageState extends BasePage<FindPage> { ...@@ -263,11 +302,9 @@ class _FindPageState extends BasePage<FindPage> {
return widget.fromPage; return widget.fromPage;
} }
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_findModel.init(context); _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