Commit 2463d3fb authored by 林生雨's avatar 林生雨

commit

parent 96727ad9
/*
* @author lsy
* @date 2020/7/8
**/
import 'package:flutter/material.dart';
class StickyTabBarDelegateWithSize extends SliverPersistentHeaderDelegate {
final Widget child;
final double height;
StickyTabBarDelegateWithSize({@required this.child, this.height});
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return this.child;
}
@override
double get maxExtent => height ?? 40;
@override
double get minExtent => height ?? 40;
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
return true;
}
}
...@@ -11,6 +11,7 @@ import 'package:cached_network_image/cached_network_image.dart'; ...@@ -11,6 +11,7 @@ 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';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.dart'; import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.dart';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegateWithSize.dart';
import 'package:gm_flutter/ClueModel/page/levelTwo/LevelTwoPage.dart'; import 'package:gm_flutter/ClueModel/page/levelTwo/LevelTwoPage.dart';
import 'package:gm_flutter/ClueModel/page/plan/FilterView.dart'; import 'package:gm_flutter/ClueModel/page/plan/FilterView.dart';
import 'package:gm_flutter/ClueModel/page/plan/PlanBar.dart'; import 'package:gm_flutter/ClueModel/page/plan/PlanBar.dart';
...@@ -60,6 +61,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -60,6 +61,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
@override @override
void initState() { void initState() {
print("LSY PLAN INIT");
// DioUtil.getInstance().setProxy("172.30.8.245"); // DioUtil.getInstance().setProxy("172.30.8.245");
super.initState(); super.initState();
_model.init(); _model.init();
...@@ -90,16 +92,27 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -90,16 +92,27 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
context: context, context: context,
child: SafeArea( child: SafeArea(
top: false, top: false,
child: Stack( child: baseStateView(
children: <Widget>[ MediaQuery.of(context).size.width,
Container( MediaQuery.of(context).size.height,
_model.stateLive,
newHome(), () {
_model.stateLive.notifyView(LOADING);
_model.init();
}, paddingTop: stateBarHeight + kToolbarHeight)),
));
}
Widget newHome() {
return Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height, //主页 剪去tabbar高度
height: MediaQuery.of(context).size.height - 79,
child: Stack( child: Stack(
children: <Widget>[ children: <Widget>[
Container( Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height - 79,
// child: child(), // child: child(),
child: homeWarp(), child: homeWarp(),
), ),
...@@ -118,9 +131,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -118,9 +131,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Container( Container(
height: data.data[1] - 45 < 0 height:
? 0 data.data[1] - 45 < 0 ? 0 : data.data[1] - 45,
: data.data[1] - 45,
color: Colors.transparent, color: Colors.transparent,
), ),
Container( Container(
...@@ -128,20 +140,17 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -128,20 +140,17 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: child: Container().gestureDetector(() {
Container().gestureDetector(() {
clickIndexOther(0); clickIndexOther(0);
}), }),
), ),
Expanded( Expanded(
child: child: Container().gestureDetector(() {
Container().gestureDetector(() {
clickIndexOther(1); clickIndexOther(1);
}), }),
), ),
Expanded( Expanded(
child: child: Container().gestureDetector(() {
Container().gestureDetector(() {
clickIndexOther(2); clickIndexOther(2);
}), }),
), ),
...@@ -151,10 +160,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -151,10 +160,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
Expanded( Expanded(
child: Container( child: Container(
color: Color.fromARGB( color: Color.fromARGB(
(data.data[2] * 153).toInt(), (data.data[2] * 153).toInt(), 0, 0, 0),
0,
0,
0),
).gestureDetector(() { ).gestureDetector(() {
hideAllMenuListener.notifyListeners(); hideAllMenuListener.notifyListeners();
}), }),
...@@ -194,8 +200,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -194,8 +200,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
maxHeight: 272, maxHeight: 272,
listener: sortMenuListener, listener: sortMenuListener,
child: child: SortView(_model.sortList, _model.sortPos, (index) {
SortView(_model.sortList, _model.sortPos, (index) {
clickIndexOther(1); clickIndexOther(1);
_model.sortClick(index); _model.sortClick(index);
}), }),
...@@ -239,41 +244,10 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -239,41 +244,10 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
) )
], ],
), ),
),
StreamBuilder(
stream: _model.stateLive.stream,
initialData: _model.stateLive.data ?? LOADING,
builder: (c, data) {
if (data.data == LOADING) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.white,
child: loadingItem(),
); );
} else if (data.data == FAIL) {
return Container(
color: Colors.white,
child: errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () {
_model.stateLive.notifyView(LOADING);
_model.init();
}, paddingTop: stateBarHeight + kToolbarHeight),
);
} else {
return Container(
width: 0,
height: 0,
);
}
},
)
],
),
),
));
} }
//搜索框
Widget head() { Widget head() {
return Container( return Container(
height: topHeight, height: topHeight,
...@@ -364,7 +338,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -364,7 +338,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
}, childCount: 2)), }, childCount: 2)),
SliverPersistentHeader( SliverPersistentHeader(
pinned: true, pinned: true,
delegate: StickyTabBarDelegate(child: planBar()), delegate:
StickyTabBarDelegateWithSize(child: planBar(), height: 45),
) )
]; ];
}, },
......
...@@ -32,6 +32,7 @@ class TopListState extends State<TopList> ...@@ -32,6 +32,7 @@ class TopListState extends State<TopList>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_model.tagId="${widget.id}";
_model.getData(true); _model.getData(true);
refresh = (str) { refresh = (str) {
_model.stateLive.notifyView(LOADING); _model.stateLive.notifyView(LOADING);
......
...@@ -43,12 +43,10 @@ class TopListModel extends BaseModel { ...@@ -43,12 +43,10 @@ class TopListModel extends BaseModel {
datasLive.notifyView([]); datasLive.notifyView([]);
} }
} else { } else {
stateLive.notifyView(ENDLOADING);
datas.addAll(event.data.plans); datas.addAll(event.data.plans);
datasLive.notifyView(datas); datasLive.notifyView(datas);
} }
if (page == 1) {
stateLive.notifyView(ENDLOADING);
}
} else { } else {
NativeToast.showNativeToast(event.message); NativeToast.showNativeToast(event.message);
stateLive.notifyView(FAIL); stateLive.notifyView(FAIL);
......
...@@ -521,7 +521,10 @@ Widget baseStateView(double width, double height, LiveData<int> stateLive, ...@@ -521,7 +521,10 @@ Widget baseStateView(double width, double height, LiveData<int> stateLive,
initialData: stateLive.data ?? LOADING, initialData: stateLive.data ?? LOADING,
builder: (c, data) { builder: (c, data) {
if (data.data == LOADING) { if (data.data == LOADING) {
return loadingItem(); return Container(
color: Colors.white,
child: loadingItem(),
);
} else if (data.data == FAIL) { } else if (data.data == FAIL) {
return errorItem(width, height, retry, paddingTop: paddingTop); return errorItem(width, height, retry, paddingTop: paddingTop);
} else if (data.data == EMPTY) { } else if (data.data == EMPTY) {
......
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