Commit 11a4f46c authored by 林生雨's avatar 林生雨

commit

parent 44fc10b9
...@@ -125,7 +125,9 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -125,7 +125,9 @@ class LevelOneState extends BaseState<LevelOnePage>
_model.init(() { _model.init(() {
_initTabBar(); _initTabBar();
}); });
}))); },paddingTop: stateBarHeight+kToolbarHeight)
)
);
} }
Widget newHomeWarp() { Widget newHomeWarp() {
......
...@@ -130,7 +130,9 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -130,7 +130,9 @@ class LevelTwoState extends BaseState<LevelTwoPage>
_model.init(() { _model.init(() {
_initTabBar(); _initTabBar();
}); });
}))); },
paddingTop: MediaQueryData.fromWindow(window).padding.top +
kToolbarHeight)));
} }
Widget newHomeWarp() { Widget newHomeWarp() {
......
/*
* @author lsy
* @date 2020/7/8
**/
import 'package:flutter/cupertino.dart';
class PlanList extends StatefulWidget{
@override
State<StatefulWidget> createState() =>PlanListState();
}
class PlanListState extends State<PlanList>{
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
}
}
\ No newline at end of file
...@@ -40,10 +40,11 @@ class PlanModel extends BaseModel { ...@@ -40,10 +40,11 @@ class PlanModel extends BaseModel {
String min_price = ""; String min_price = "";
String max_price = ""; String max_price = "";
String rank_type = ""; String rank_type = "";
int page = 1; int page = 1;
int sortPos = 0; int sortPos = 0;
void init() { void init({VoidCallback call}) {
ClueApiImpl.getInstance() ClueApiImpl.getInstance()
.getPlan(DioUtil.getInstance().getDio()) .getPlan(DioUtil.getInstance().getDio())
.listen((event) { .listen((event) {
...@@ -52,6 +53,9 @@ class PlanModel extends BaseModel { ...@@ -52,6 +53,9 @@ class PlanModel extends BaseModel {
sortList = event.data.orders; sortList = event.data.orders;
picLive.notifyView(event.data.ranks); picLive.notifyView(event.data.ranks);
stateLive.notifyView(ENDLOADING); stateLive.notifyView(ENDLOADING);
if (call != null) {
call();
}
refreshFeed(true); refreshFeed(true);
} else { } else {
stateLive.notifyView(FAIL); stateLive.notifyView(FAIL);
...@@ -77,6 +81,7 @@ class PlanModel extends BaseModel { ...@@ -77,6 +81,7 @@ class PlanModel extends BaseModel {
void refreshFeed(bool clear, {RefreshController controller}) { void refreshFeed(bool clear, {RefreshController controller}) {
if (clear) { if (clear) {
page = 1;
feedDatas.clear(); feedDatas.clear();
} }
ClueApiImpl.getInstance() ClueApiImpl.getInstance()
...@@ -85,7 +90,11 @@ class PlanModel extends BaseModel { ...@@ -85,7 +90,11 @@ class PlanModel extends BaseModel {
.listen((event) { .listen((event) {
if (event.error == 0) { if (event.error == 0) {
if (event.data.plans == null || event.data.plans.isEmpty) { if (event.data.plans == null || event.data.plans.isEmpty) {
feedsLive.notifyView(Pair(ENDLOADING, [])); if(page==1){
feedsLive.notifyView(Pair(EMPTY, []));
}else{
feedsLive.notifyView(Pair(ENDLOADING, []));
}
} else { } else {
feedDatas.addAll(event.data.plans); feedDatas.addAll(event.data.plans);
feedsLive.notifyView(Pair(ENDLOADING, feedDatas)); feedsLive.notifyView(Pair(ENDLOADING, feedDatas));
...@@ -134,6 +143,7 @@ class PlanModel extends BaseModel { ...@@ -134,6 +143,7 @@ class PlanModel extends BaseModel {
} }
sortPos = index; sortPos = index;
order_by = sortList[index].id.toString(); order_by = sortList[index].id.toString();
feedsLive.notifyView(Pair(LOADING, null));
refreshFeed(true); refreshFeed(true);
} }
...@@ -143,6 +153,7 @@ class PlanModel extends BaseModel { ...@@ -143,6 +153,7 @@ class PlanModel extends BaseModel {
} }
max_price = max.toString(); max_price = max.toString();
min_price = min.toString(); min_price = min.toString();
feedsLive.notifyView(Pair(LOADING, null));
refreshFeed(true); refreshFeed(true);
} }
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
* @author lsy * @author lsy
* @date 2020/6/30 * @date 2020/6/30
**/ **/
import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'dart:ui'; import 'dart:ui';
...@@ -9,6 +10,7 @@ import 'dart:ui'; ...@@ -9,6 +10,7 @@ import 'dart:ui';
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';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.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';
...@@ -27,6 +29,7 @@ import 'package:gm_flutter/commonModel/popMenu/BaseMenuListener.dart'; ...@@ -27,6 +29,7 @@ import 'package:gm_flutter/commonModel/popMenu/BaseMenuListener.dart';
import 'package:gm_flutter/commonModel/popMenu/BasePopMenu.dart'; import 'package:gm_flutter/commonModel/popMenu/BasePopMenu.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart'; import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import 'package:gm_flutter/commonModel/util/WidgetUtil.dart'; import 'package:gm_flutter/commonModel/util/WidgetUtil.dart';
import 'package:gm_flutter/commonModel/view/baseRefreshIndicator.dart';
import 'package:gm_flutter/main.mark.dart'; import 'package:gm_flutter/main.mark.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
...@@ -96,155 +99,147 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -96,155 +99,147 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
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,
child: Column( child: Stack(
children: <Widget>[ children: <Widget>[
head(), Container(
Expanded( width: MediaQuery.of(context).size.width,
child: Stack( height: MediaQuery.of(context).size.height,
children: <Widget>[ // child: child(),
Container( child: homeWarp(),
width: MediaQuery.of(context).size.width, ),
height: StreamBuilder<List<double>>(
MediaQuery.of(context).size.height - topHeight, stream: _model.backLive.stream,
child: child(), initialData: [0.0, 0.0, 0.0],
), builder: (c, data) {
StreamBuilder<List<double>>( return Positioned(
stream: _model.backLive.stream, left: 0.0,
initialData: [0.0, 0.0, 0.0], top: 0.0,
builder: (c, data) { child: Visibility(
return Positioned( visible: data.data[2] > 0.1,
left: 0.0, child: Container(
top: 0.0, width: MediaQuery.of(context).size.width,
child: Visibility( height: MediaQuery.of(context).size.height,
visible: data.data[2] > 0.1, child: Column(
child: Container( children: <Widget>[
width: MediaQuery.of(context).size.width, Container(
height: MediaQuery.of(context).size.height, height: data.data[1] - 45 < 0
child: Column( ? 0
: data.data[1] - 45,
color: Colors.transparent,
),
Container(
height: 45,
child: Row(
children: <Widget>[ children: <Widget>[
Container( Expanded(
height: data.data[1] - 45 < 0 child:
? 0 Container().gestureDetector(() {
: data.data[1] - 45, clickIndexOther(0);
color: Colors.transparent, }),
), ),
Container( Expanded(
height: 45, child:
child: Row( Container().gestureDetector(() {
children: <Widget>[ clickIndexOther(1);
Expanded( }),
child: Container()
.gestureDetector(() {
clickIndexOther(0);
}),
),
Expanded(
child: Container()
.gestureDetector(() {
clickIndexOther(1);
}),
),
Expanded(
child: Container()
.gestureDetector(() {
clickIndexOther(2);
}),
),
],
),
), ),
Expanded( Expanded(
child: Container( child:
color: Color.fromARGB( Container().gestureDetector(() {
(data.data[2] * 153).toInt(), clickIndexOther(2);
0,
0,
0),
).gestureDetector(() {
hideAllMenuListener
.notifyListeners();
}), }),
) ),
], ],
), ),
), ),
), Expanded(
); child: Container(
}), color: Color.fromARGB(
StreamBuilder<List<double>>( (data.data[2] * 153).toInt(),
stream: _model.posLive.stream, 0,
initialData: [0.0, 0.0], 0,
builder: (c, data) { 0),
return BasePopMenu( ).gestureDetector(() {
leftPos: data.data[0], hideAllMenuListener.notifyListeners();
topPos: data.data[1], }),
width: MediaQuery.of(context).size.width, )
maxHeight: 450, ],
listener: projectMenuListener,
child: ProjectView(_model.projectData, (id) {
clickIndexOther(0);
_model.projectClick(id);
}),
proListener: (pro) {
_model.backProgress(pro, 0);
},
);
}),
StreamBuilder<List<double>>(
stream: _model.posLive.stream,
initialData: [0.0, 0.0],
builder: (c, data) {
return BasePopMenu(
leftPos: data.data[0],
topPos: data.data[1],
width: MediaQuery.of(context).size.width,
maxHeight: 272,
listener: sortMenuListener,
child: SortView(_model.sortList, _model.sortPos,
(index) {
clickIndexOther(1);
_model.sortClick(index);
}),
proListener: (pro) {
_model.backProgress(pro, 1);
},
);
},
),
StreamBuilder<List<double>>(
stream: _model.posLive.stream,
initialData: [0.0, 0.0],
builder: (c, data) {
return BasePopMenu(
leftPos: data.data[0],
topPos: data.data[1],
width: MediaQuery.of(context).size.width,
maxHeight: 186,
listener: filterMenuListener,
child: FilterView((max, min) {
clickIndexOther(2);
_model.filterClick(max, min);
}),
proListener: (pro) {
_model.backProgress(pro, 2);
},
);
}),
StreamBuilder<bool>(
stream: _model.showTab.stream,
initialData: _model.showTab.data ?? false,
builder: (c, data) {
return Visibility(
visible: data.data,
child: Container(
color: Colors.white,
child: planBarView,
), ),
); ),
),
);
}),
StreamBuilder<List<double>>(
stream: _model.posLive.stream,
initialData: [0.0, 0.0],
builder: (c, data) {
return BasePopMenu(
leftPos: data.data[0],
topPos: data.data[1],
width: MediaQuery.of(context).size.width,
maxHeight: 450,
listener: projectMenuListener,
child: ProjectView(_model.projectData, (id) {
clickIndexOther(0);
_model.projectClick(id);
}),
proListener: (pro) {
_model.backProgress(pro, 0);
}, },
) );
], }),
), StreamBuilder<List<double>>(
stream: _model.posLive.stream,
initialData: [0.0, 0.0],
builder: (c, data) {
return BasePopMenu(
leftPos: data.data[0],
topPos: data.data[1],
width: MediaQuery.of(context).size.width,
maxHeight: 272,
listener: sortMenuListener,
child:
SortView(_model.sortList, _model.sortPos, (index) {
clickIndexOther(1);
_model.sortClick(index);
}),
proListener: (pro) {
_model.backProgress(pro, 1);
},
);
},
),
StreamBuilder<List<double>>(
stream: _model.posLive.stream,
initialData: [0.0, 0.0],
builder: (c, data) {
return BasePopMenu(
leftPos: data.data[0],
topPos: data.data[1],
width: MediaQuery.of(context).size.width,
maxHeight: 186,
listener: filterMenuListener,
child: FilterView((max, min) {
clickIndexOther(2);
_model.filterClick(max, min);
}),
proListener: (pro) {
_model.backProgress(pro, 2);
},
);
}),
StreamBuilder<bool>(
stream: _model.showTab.stream,
initialData: _model.showTab.data ?? false,
builder: (c, data) {
return Visibility(
visible: data.data,
child: Container(
color: Colors.white,
child: planBarView,
),
);
},
) )
], ],
), ),
...@@ -263,14 +258,11 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -263,14 +258,11 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
} else if (data.data == FAIL) { } else if (data.data == FAIL) {
return Container( return Container(
color: Colors.white, color: Colors.white,
child: errorItem( child: errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.width, MediaQuery.of(context).size.height, () {
MediaQuery.of(context).size.height, _model.stateLive.notifyView(LOADING);
() { _model.init();
_model.stateLive.notifyView(LOADING); }, paddingTop: stateBarHeight + kToolbarHeight),
_model.init();
},
),
); );
} else { } else {
return Container( return Container(
...@@ -344,36 +336,102 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -344,36 +336,102 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
); );
} }
Widget child() { Widget homeWarp() {
return NotificationListener( return BaseNestedScrollViewRefreshIndicator(
onNotification: (scrollNotification) { onRefresh: () async {
if (scrollNotification is ScrollUpdateNotification && Completer completer = new Completer();
scrollNotification.metrics.axisDirection.index == 2) { _model.init(call: () {
_onScroll(scrollNotification.metrics.pixels); completer.complete();
} });
return false; return completer.future;
}, },
child: baseRefreshView( child: home());
refreshController, }
() {
_model.refreshFeed(true, controller: refreshController); Widget home() {
}, return NestedScrollView(
Container( headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
width: 0, return <Widget>[
height: 0, SliverOverlapAbsorber(
), handle:
NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: baseSliverAppBar(null,
height: kToolbarHeight + stateBarHeight, needpic: false)),
SliverList( SliverList(
delegate: SliverChildBuilderDelegate( delegate: SliverChildBuilderDelegate((BuildContext c, int i) {
(BuildContext context, int index) { if (i == 0) {
return planList[index]; return Container(
height: kToolbarHeight,
);
}
return towPic();
}, childCount: 2)),
SliverPersistentHeader(
pinned: true,
delegate: StickyTabBarDelegate(child: planBar()),
)
];
},
body: child());
}
Widget child() {
return StreamBuilder<Pair<int, List<Plans>>>(
stream: _model.feedsLive.stream,
initialData: _model.feedsLive.data ?? Pair(LOADING, null),
builder: (c, data) {
if (data.data.first == FAIL) {
return errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () {
_model.feedsLive.notifyView(Pair(LOADING, null));
_model.refreshFeed(true);
});
}
if (data.data.first == LOADING) {
return Container(
color: Colors.white,
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: loadingItem(),
);
}
if (data.data.first == EMPTY) {
return emptyItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height);
}
return Container(
color: Color(0xffF7F6FA),
child: baseRefreshView(
refreshController,
() {
_model.refreshFeed(true, controller: refreshController);
}, },
childCount: planList.length, Container(
), width: 0,
), height: 0,
onLoading: () { ),
_model.loadMore(); SliverList(
}, delegate: SliverChildBuilderDelegate(
pullUp: true)); (BuildContext context, int index) {
if (data.data.second.length == 0) {
if (_model.page != 1) {
refreshController.loadNoData();
}
} else {
refreshController.loadComplete();
}
return PlanItem(_model.feedDatas[index]);
},
childCount: _model.feedDatas.length,
),
),
onLoading: () {
_model.loadMore();
},
pullDown: false,
pullUp: true));
},
);
} }
Widget towPic() { Widget towPic() {
...@@ -436,6 +494,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -436,6 +494,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
Widget planBar() { Widget planBar() {
return Container( return Container(
color: Colors.white,
key: globalKey, key: globalKey,
child: planBarView, child: planBarView,
); );
...@@ -457,7 +516,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -457,7 +516,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
double bottom = double bottom =
// WidgetUtil.buttonLeftMenuPosition(globalKey.currentContext)?.top ?? // WidgetUtil.buttonLeftMenuPosition(globalKey.currentContext)?.top ??
topPos == null ? 0.0 : topPos.dy + 45 - topHeight; topPos == null ? 0.0 : topPos.dy + 45;
if (bottom < 45) { if (bottom < 45) {
bottom = 45; bottom = 45;
} }
......
...@@ -43,6 +43,7 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin { ...@@ -43,6 +43,7 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin {
@override @override
void initState() { void initState() {
// DioUtil.getInstance().setProxy("172.30.8.245");
_model.rank_type = widget.rank_type; _model.rank_type = widget.rank_type;
init(); init();
super.initState(); super.initState();
...@@ -94,7 +95,9 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin { ...@@ -94,7 +95,9 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin {
child: homeWarp()), child: homeWarp()),
), () { ), () {
init(); init();
}), },
paddingTop:
MediaQueryData.fromWindow(window).padding.top + kToolbarHeight),
); );
} }
......
...@@ -57,7 +57,7 @@ class Data { ...@@ -57,7 +57,7 @@ class Data {
tags = new List<Tags>(); tags = new List<Tags>();
json['tags'].forEach((v) { tags.add(new Tags.fromJson(v)); }); json['tags'].forEach((v) { tags.add(new Tags.fromJson(v)); });
} }
areas = json['areas'] != null ? new Areas.fromJson(json['areas']) : null; // areas = json['areas'] != null ? new Areas.fromJson(json['areas']) : null;
if (json['orders'] != null) { if (json['orders'] != null) {
orders = new List<Orders>(); orders = new List<Orders>();
json['orders'].forEach((v) { orders.add(new Orders.fromJson(v)); }); json['orders'].forEach((v) { orders.add(new Orders.fromJson(v)); });
......
...@@ -6,7 +6,7 @@ class PlanFeedBean { ...@@ -6,7 +6,7 @@ class PlanFeedBean {
int error; int error;
String message; String message;
Map extra; Map extra;
Map errorCode; int errorCode;
Map errorExtra; Map errorExtra;
Data data; Data data;
UserType userType; UserType userType;
...@@ -101,8 +101,8 @@ class Plans { ...@@ -101,8 +101,8 @@ class Plans {
positiveRate = json['positive_rate']; positiveRate = json['positive_rate'];
salesCount = json['sales_count']; salesCount = json['sales_count'];
baseAttrs = json['base_attrs'].cast<String>(); baseAttrs = json['base_attrs'].cast<String>();
minPrice = json['min_price']; minPrice = json['min_price'] is int? "${json['min_price']}":json['min_price'];
maxPrice = json['max_price']; maxPrice = json['max_price'] is int? "${json['max_price']}":json['max_price'];
projectImage = json['project_image']; projectImage = json['project_image'];
} }
......
...@@ -59,18 +59,20 @@ class MainManager { ...@@ -59,18 +59,20 @@ class MainManager {
innerSetData(map, IS_WIFI); innerSetData(map, IS_WIFI);
innerSetData(map, HARDWARE_MODEL); innerSetData(map, HARDWARE_MODEL);
innerSetData(map, USER_ID); innerSetData(map, USER_ID);
// innerSetData(map, COOKIE);
innerSetData(map, USER_AGENT); innerSetData(map, USER_AGENT);
if (map[COOKIE] == null) {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393");
}else{
innerSetData(map, COOKIE);
}
innerSetData(map, BASE_URL); innerSetData(map, BASE_URL);
DioUtil.setDefOptions( DioUtil.setDefOptions(
baseUrl: "${map[BASE_URL]}/", baseUrl: "${map[BASE_URL]}/",
cookie: map[COOKIE], cookie: map[COOKIE],
agent: map[USER_AGENT]); agent: map[USER_AGENT]);
if (map[COOKIE] == null) {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393");
}
print( print(
"LSY QQWWEERRTTYY ${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE)}"); "LSY QQWWEERRTTYY ${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE)}");
DioUtil.getInstance().changeOpt(); DioUtil.getInstance().changeOpt();
......
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