Commit f8b73bca authored by 杜欣's avatar 杜欣

Merge branch 'test' into featrue/duxin

# Conflicts:
#	lib/ClueModel/page/levelTwo/LevelTwoPage.dart
parents 6e0f38b1 2070454b
......@@ -29,6 +29,7 @@ class PlanCompareDetailPage extends StatefulWidget {
class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
PlanCompareDetailModel _model = new PlanCompareDetailModel();
double screenWidth;
@override
void initState() {
super.initState();
......@@ -43,7 +44,10 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
@override
Widget buildItem(BuildContext context) {
screenWidth = MediaQuery.of(context).size.width;
screenWidth = MediaQuery
.of(context)
.size
.width;
return Scaffold(
appBar: baseAppBar(
title: "对比详情",
......@@ -62,10 +66,16 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
initialData: _model.stateLive.data ?? LOADING,
builder: (c, data) {
if (data.data == FAIL) {
return errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () {
_model.init(widget._planIds);
});
return errorItem(MediaQuery
.of(context)
.size
.width,
MediaQuery
.of(context)
.size
.height, () {
_model.init(widget._planIds);
});
}
if (data.data == LOADING) {
return loadingItem();
......@@ -81,60 +91,66 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
head(),
Expanded(
child: Container(
child: StreamBuilder<Pair<int, List<Groups>>>(
stream: _model.detailLive.stream,
initialData: _model.detailLive.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.init(widget._planIds);
});
}
return ListView.builder(
itemBuilder: (BuildContext context, int index) {
if (index == data.data.second.length * 2 - 1) {
return Container(
height: 40,
color: Color(0xffF7F6FA),
);
}
if (index % 2 != 0) {
return Container(
height: 5,
color: Color(0xffF7F6FA),
);
}
int newIndex = (index / 2).floor();
Groups group = data.data.second[newIndex];
Widget widget;
if (group.groupType == 'hot') {
widget = Container(
child: planPopularityView(group),
// height: 100,
// alignment: Alignment.center,
// child: baseText("第一个", 15, Colors.black),
);
} else if (group.groupType == 'normal_attrs') {
widget = Container(
child: planNormalEffectiveAttrsView(group),
);
} else if (group.groupType == 'effective_attrs') {
widget = Container(
child: planNormalEffectiveAttrsView(group),
);
} else {
widget = planNormalEffectiveAttrsView(group);
child: StreamBuilder<Pair<int, List<Groups>>>(
stream: _model.detailLive.stream,
initialData: _model.detailLive.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.init(widget._planIds);
});
}
return Container(
margin: EdgeInsets.only(left: 15, right: 15),
child: widget,
return ListView.builder(
itemBuilder: (BuildContext context, int index) {
if (index == data.data.second.length * 2 - 1) {
return Container(
height: 40,
color: Color(0xffF7F6FA),
);
}
if (index % 2 != 0) {
return Container(
height: 5,
color: Color(0xffF7F6FA),
);
}
int newIndex = (index / 2).floor();
Groups group = data.data.second[newIndex];
Widget widget;
if (group.groupType == 'hot') {
widget = Container(
child: planPopularityView(group),
// height: 100,
// alignment: Alignment.center,
// child: baseText("第一个", 15, Colors.black),
);
} else if (group.groupType == 'normal_attrs') {
widget = Container(
child: planNormalEffectiveAttrsView(group),
);
} else if (group.groupType == 'effective_attrs') {
widget = Container(
child: planNormalEffectiveAttrsView(group),
);
} else {
widget = planNormalEffectiveAttrsView(group);
}
return Container(
margin: EdgeInsets.only(left: 15, right: 15),
child: widget,
);
},
itemCount: data.data.second.length * 2,
);
},
itemCount: data.data.second.length * 2,
);
}),
))
}),
))
],
);
}
......@@ -165,32 +181,34 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
PlansInfo planinfo = data.data.second[index];
return Container(
child: Stack(children: <Widget>[
Positioned(
top: 8,
left: index == 0 ? 0 : 5.5,
child: Container(
height: 75,
width: (screenWidth - 30 - 11) / 2,
child: ClipRRect(
borderRadius: BorderRadius.circular(7),
child: Image.asset('assets/plan_compare_detail_info_bg.png',
fit: BoxFit.cover),
),
)),
Positioned(
left: 12,
top: 24,
child:
Positioned(
top: 8,
left: index == 0 ? 0 : 5.5,
child: Container(
height: 75,
width: (screenWidth - 30 - 11) / 2,
child: ClipRRect(
borderRadius: BorderRadius.circular(7),
child: Image.asset(
'assets/plan_compare_detail_info_bg.png',
fit: BoxFit.cover),
),
)),
Positioned(
left: 12,
top: 24,
child:
baseText(planinfo.planName, 15, Color(0xff333333), bold: true),
),
Positioned(
left: 12,
top: 48,
child: baseText('¥' + planinfo.minPrice + '-' + planinfo.maxPrice,
14, Colors.red,
bold: true),
),
]));
),
Positioned(
left: 12,
top: 48,
child: baseText(
'¥' + planinfo.minPrice + '-' + planinfo.maxPrice,
14, Colors.red,
bold: true),
),
]));
},
);
}
......@@ -442,3 +460,4 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
),
]));
}
}
......@@ -50,6 +50,7 @@ class ProjectDetailsItemView extends StatelessWidget {
width: double.maxFinite,
margin: EdgeInsets.only(bottom: 25, left: 15, right: 15),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(right: 25.0),
......@@ -57,9 +58,23 @@ class ProjectDetailsItemView extends StatelessWidget {
width: 78,
child: baseText(attrs.attrName, 13, Color(0xFF999999)),
),
Container(
alignment: Alignment.centerLeft,
child: baseText(attrs.attrValue, 14, Color(0xFF282828))),
Expanded(
child: Container(
alignment: Alignment.centerLeft,
child: Text(
attrs.attrValue,
textScaleFactor: 1.0,
softWrap: true,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: 14,
color: Color(0xFF282828),
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400),
)
// baseText(attrs.attrValue, 14, Color(0xFF282828))
),
),
],
),
);
......
......@@ -48,7 +48,7 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
backClick: () {
Navigator.pop(context);
}),
body: Center(
body: Container(
child: getBody(),
),
);
......
......@@ -9,14 +9,16 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import 'package:gm_flutter/main.mark.dart';
class LevelOneItem extends StatelessWidget {
final Cards cards;
VoidCallback lowPrice;
VoidCallback ask;
VoidCallback compare;
LevelOneItem(this.cards, {this.lowPrice, this.ask});
LevelOneItem(this.cards, {this.lowPrice, this.ask, this.compare});
@override
Widget build(BuildContext context) {
......@@ -335,7 +337,7 @@ class LevelOneItem extends StatelessWidget {
child: baseText("去比较", 13, Color(0xff282828), bold: true),
)
],
);
).gestureDetector(compare);
}
Widget DiaryItem(BuildContext context) {
......
......@@ -10,6 +10,7 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart';
import 'package:gm_flutter/main.mark.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'LevelOneItem.dart';
......@@ -18,8 +19,11 @@ class LevelOneList extends StatefulWidget {
double topHeight;
int planId;
String tabName;
String pageName;
int index;
LevelOneList(this.planId, this.tabName, this.topHeight);
LevelOneList(
this.index, this.pageName, this.planId, this.tabName, this.topHeight);
@override
State<StatefulWidget> createState() => LevelOneListState();
......@@ -56,11 +60,8 @@ class LevelOneListState extends State<LevelOneList>
@override
Widget build(BuildContext context) {
super.build(context);
return baseStateView(
MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height ,
_model.stateLive,
pages(), () {
return baseStateView(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, _model.stateLive, pages(), () {
_model.refreshView(true);
}, paddingTop: widget.topHeight);
}
......@@ -98,6 +99,7 @@ class LevelOneListState extends State<LevelOneList>
lowPrice: () {
DiscussLowPricePopView.showPopView(
context,
widget.pageName,
"${widget.planId}",
_model.data[index].cardType == "hospital"
? _model.data[index].hospital
......@@ -106,6 +108,18 @@ class LevelOneListState extends State<LevelOneList>
? _model.data[index].doctor
: "");
},
compare: () {
RouterCenterImpl().findMainRouter().jumpPage(
context,
widget.index == 0
? "level_one_plan_compare"
: "level_two_plan_compare",
{
"planId": widget.planId,
"planType": widget.index == 0 ? 1 : 2
},
false);
},
);
},
childCount: _model.data.length + 1,
......
......@@ -24,6 +24,7 @@ import 'package:pull_to_refresh/pull_to_refresh.dart';
class LevelOnePage extends StatefulWidget {
int planId = 10;
Map<String, dynamic> params;
final String PAGE_NAME = "level_one_plan_detail";
LevelOnePage(this.params) {
this.planId = params["planId"];
......@@ -172,8 +173,8 @@ class LevelOneState extends BaseState<LevelOnePage>
for (int i = 0; i < _model.tabsList.length; i++) {
list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget(
Key("Tab${i}"),
LevelOneList(widget.planId, _model.tabsList[i].tabType,
kToolbarHeight + stateBarHeight)));
LevelOneList(0, widget.PAGE_NAME, widget.planId,
_model.tabsList[i].tabType, kToolbarHeight + stateBarHeight)));
}
final double statusBarHeight = MediaQuery.of(context).padding.top;
final double pinnedHeaderHeight = statusBarHeight + kToolbarHeight;
......@@ -319,8 +320,36 @@ class LevelOneState extends BaseState<LevelOnePage>
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
baseText(element.attrName, 14, Color(0xff282828), bold: true),
baseText(element.attrValue, 11, Color(0xff999999)),
Container(
margin: EdgeInsets.only(left: 2, right: 2),
child: Text(
element.attrName,
textScaleFactor: 1.0,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: 14,
color: Color(0xff282828),
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400),
),
),
Container(
margin: EdgeInsets.only(left: 2, right: 2),
child: Text(
element.attrValue,
textScaleFactor: 1.0,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: 11,
color: Color(0xff999999),
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400),
),
)
],
),
),
......@@ -361,9 +390,11 @@ class LevelOneState extends BaseState<LevelOnePage>
),
GestureDetector(
onTap: () {
RouterCenterImpl()
.findMainRouter()
.jumpPage(context, "", {}, false);
RouterCenterImpl().findMainRouter().jumpPage(
context,
"level_one_plan_instruction",
{"planId": widget.planId},
false);
},
behavior: HitTestBehavior.opaque,
child: baseText("了解更多", 12, Color(0xff3FB5AF)),
......@@ -374,14 +405,48 @@ class LevelOneState extends BaseState<LevelOnePage>
if (_model.planoverItem != null) {
_model.planoverItem.explanationAttrs.forEach((element) {
list.add(Container(
height: 28,
margin: EdgeInsets.only(bottom: 15),
child: Row(
children: <Widget>[
baseText(element.attrName, 13, Color(0xff999999)),
Container(
margin: EdgeInsets.only(left: 12),
child: baseText(element.attrValue, 13, Color(0xff666666)),
constraints: BoxConstraints(
maxWidth: 52,
),
child: Text(
element.attrName,
textScaleFactor: 1.0,
softWrap: true,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: 13,
color: Color(0xff999999),
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400),
)
),
Expanded(
child: Container(
margin: EdgeInsets.only(left: 12),
child:
Text(
element.attrValue,
textScaleFactor: 1.0,
softWrap: false,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: 13,
color: Color(0xff666666),
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400),
),
// baseText(element.attrValue, 13, Color(0xff666666)
// ),
),
)
],
),
));
......
......@@ -18,13 +18,14 @@ import 'package:gm_flutter/ClueModel/page/mechanismBox/MechanismBoxPage.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart';
import 'package:gm_flutter/commonModel/net/DioUtil.dart';
import 'package:gm_flutter/commonModel/view/baseRefreshIndicator.dart';
import 'package:gm_flutter/main.mark.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
class LevelTwoPage extends StatefulWidget {
int planId = 192;
int planId;
final String PAGE_NAME = "level_two_plan_deatil";
LevelTwoPage(Map<String, dynamic> params) {
planId = params['planId'];
}
......@@ -175,8 +176,8 @@ class LevelTwoState extends BaseState<LevelTwoPage>
for (int i = 0; i < _model.tabsList.length; i++) {
list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget(
Key("Tab${i}"),
LevelOneList(
widget.planId, _model.tabsList[i].tabType, kToolbarHeight + d)));
LevelOneList(1, widget.PAGE_NAME, widget.planId,
_model.tabsList[i].tabType, kToolbarHeight + d)));
}
final double statusBarHeight = MediaQuery.of(context).padding.top;
final double pinnedHeaderHeight = statusBarHeight + kToolbarHeight;
......@@ -354,14 +355,11 @@ class LevelTwoState extends BaseState<LevelTwoPage>
),
GestureDetector(
onTap: () {
//TODO
Map<String, dynamic> map = {};
map["page_name"] = "plan_home";
map["referrer_link"] = [];
RouterCenterImpl()
.findMainRouter()
.buriedEvent("on_click_navbar_search", map);
// RouterCenterImpl().findMainRouter().jumpPage(
// context,
// "level_one_plan_instruction",
// {"planId": widget.planId},
// false);
},
behavior: HitTestBehavior.opaque,
child: baseText("了解更多", 12, Color(0xff3FB5AF)),
......
......@@ -8,8 +8,8 @@
class DiscussLowPriceModelBean {
int error;
String message;
Null extra;
Null errorExtra;
Map extra;
Map errorExtra;
UserType userType;
Data data;
......
......@@ -41,6 +41,8 @@ class JumpManager {
RouterCenterImpl().findClueRouter().getLevelTwoPage(params),
"flutter://level_one_plan_instruction":
RouterCenterImpl().findClueRouter().getProjectDetailsPage(params),
"flutter://level_two_plan_instruction":
RouterCenterImpl().findClueRouter().getProjectDetailsPage(params),
"flutter://level_one_plan_compare":
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
"flutter://level_two_plan_compare":
......
......@@ -485,9 +485,11 @@ Widget baseSliverBack(VoidCallback tap) {
decoration:
BoxDecoration(color: Color(0x99FFFFFF), shape: BoxShape.circle),
alignment: Alignment.center,
child: Container(
child: Image.asset("assets/left_arrow.png"),
),
child: Hero(
tag: "left_arrow",
child: Container(
child: Image.asset("assets/left_arrow.png"),
)),
)),
);
}
......
......@@ -70,6 +70,8 @@ class MyApp extends State<MyAppWidget> {
RouterCenterImpl().findClueRouter().getProjectDetailsPage(params),
'level_one_plan_compare': (pageName, params, _) =>
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
'level_two_plan_compare': (pageName, params, _) =>
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
'level_one_plan_compare_detail': (pageName, params, _) =>
RouterCenterImpl().findClueRouter().getPlanCompareDetailPage(params),
'level_two_plan_compare_deatil': (pageName, params, _) =>
......
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