Commit 43f78c66 authored by 朱翠翠's avatar 朱翠翠

Merge branch 'test' of http://git.wanmeizhensuo.com/linshengyu/gm_flutter into zcc/flutter

parents e4256dff 3d2d9451
...@@ -26,25 +26,23 @@ class PlanCompareDetailModel extends BaseModel { ...@@ -26,25 +26,23 @@ class PlanCompareDetailModel extends BaseModel {
.listen((event) { .listen((event) {
if (event.error == 0) { if (event.error == 0) {
stateLive.notifyView(ENDLOADING); stateLive.notifyView(ENDLOADING);
if (event.data.plansInfo != null &&
event.data.plansInfo.length > 1) {
headerLive.notifyView(event.data.plansInfo);
}
if (event.data.groups == null || event.data.groups.isEmpty) { if (event.data.groups == null || event.data.groups.isEmpty) {
detailLive.notifyView(Pair(EMPTY, null)); detailLive.notifyView(Pair(EMPTY, null));
} else { } else {
detailLive.notifyView(Pair(ENDLOADING, event.data.groups)); detailLive.notifyView(Pair(ENDLOADING, event.data.groups));
} }
if (event.data.plansInfo != null &&
event.data.plansInfo.length > 1) {
headerLive.notifyView(event.data.plansInfo);
}
} else { } else {
stateLive.notifyView(FAIL); stateLive.notifyView(FAIL);
NativeToast.showNativeToast(event.message); NativeToast.showNativeToast(event.message);
detailLive.notifyView(Pair(FAIL, null));
} }
}) })
.addToDispose(rxDispose) .addToDispose(rxDispose)
.onError((err) { .onError((err) {
stateLive.notifyView(FAIL); stateLive.notifyView(FAIL);
detailLive.notifyView(Pair(FAIL, null));
NativeToast.showNativeToast(err.message); NativeToast.showNativeToast(err.message);
}); });
} }
......
...@@ -48,6 +48,8 @@ class _PlansCompareFeedItemViewState ...@@ -48,6 +48,8 @@ class _PlansCompareFeedItemViewState
} }
getFirstLevelItem() { getFirstLevelItem() {
String price =
NumPlanUtil.getPrice(widget.plan.minPrice, widget.plan.maxPrice);
return Container( return Container(
width: double.maxFinite, width: double.maxFinite,
height: 80, height: 80,
...@@ -109,10 +111,21 @@ class _PlansCompareFeedItemViewState ...@@ -109,10 +111,21 @@ class _PlansCompareFeedItemViewState
), ),
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[ children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}', price == "暂无报价"
13, Color(0xFFFF5963)), ? Container(
width: 0,
height: 0,
)
: baseText("¥", 12, Color(0xFFFF5963)),
baseText(price, price == "暂无报价" ? 13 : 15,
price == "暂无报价" ? Color(0xFF666666) : Color(0xFFFF5963),
bold: price != "暂无报价"),
Expanded(
child: Container(),
),
baseText( baseText(
"销量${widget.plan.salesCount}", 11, Color(0xFF666666)) "销量${widget.plan.salesCount}", 11, Color(0xFF666666))
], ],
...@@ -128,25 +141,23 @@ class _PlansCompareFeedItemViewState ...@@ -128,25 +141,23 @@ class _PlansCompareFeedItemViewState
} }
getSecondLevelItem() { getSecondLevelItem() {
String price =
NumPlanUtil.getPrice(widget.plan.minPrice, widget.plan.maxPrice);
return Container( return Container(
height: 77, height: 77,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only(right: 15.0), margin: EdgeInsets.only(right: 15.0),
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: GestureDetector( child: Container(
behavior: HitTestBehavior.opaque, alignment: Alignment.center,
onTap: () => onClickCheckBox(_icon), child: Image.asset(
child: Container( _icon,
alignment: Alignment.center, width: 17,
child: Image.asset( height: 17,
_icon, fit: BoxFit.fill,
width: 17, ))),
height: 17,
fit: BoxFit.fill,
))),
),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
...@@ -157,12 +168,23 @@ class _PlansCompareFeedItemViewState ...@@ -157,12 +168,23 @@ class _PlansCompareFeedItemViewState
bold: true), bold: true),
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[ children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}', price == "暂无报价"
13, Color(0xFFFF5963)), ? Container(
baseText("指导价:¥${widget.plan.guidePrice}", 11, width: 0,
Color(0xFF666666)), height: 0,
)
: baseText("¥", 12, Color(0xFFFF5963)),
baseText(price, price == "暂无报价" ? 13 : 15,
price == "暂无报价" ? Color(0xFF666666) : Color(0xFFFF5963),
bold: price != "暂无报价"),
Expanded(
child: Container(),
),
baseText("指导价:${widget.plan.guidePrice ?? "暂无报价"}", 11,
Color(0xff666666)),
], ],
), ),
], ],
...@@ -170,7 +192,9 @@ class _PlansCompareFeedItemViewState ...@@ -170,7 +192,9 @@ class _PlansCompareFeedItemViewState
) )
], ],
), ),
); ).gestureDetector(() {
onClickCheckBox(_icon);
});
} }
onClickCheckBox(String icon) { onClickCheckBox(String icon) {
......
...@@ -52,20 +52,20 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage> ...@@ -52,20 +52,20 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
@override @override
Widget buildItem(BuildContext context) { Widget buildItem(BuildContext context) {
return Scaffold( return Scaffold(
appBar: baseAppBar( backgroundColor: Colors.white,
title: "方案对比", appBar: baseAppBar(
centerTitle: true, title: "方案对比",
backClick: () { centerTitle: true,
if (RouterCenterImpl().findMainRouter().isWithNative()) { backClick: () {
FlutterBoost.singleton.closeCurrent(); if (RouterCenterImpl().findMainRouter().isWithNative()) {
} else { FlutterBoost.singleton.closeCurrent();
Navigator.of(context).pop(); } else {
} Navigator.of(context).pop();
}), }
body: Center( }),
child: getBody(), body: SafeArea(
), child: getBody(),
); ));
} }
getBody() { getBody() {
...@@ -93,36 +93,32 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage> ...@@ -93,36 +93,32 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
} }
getList(List<Plans> plans) { getList(List<Plans> plans) {
return Stack(alignment: Alignment.bottomCenter, children: <Widget>[ return Column(
ListView.builder( children: <Widget>[
itemCount: plans.length, Expanded(
itemBuilder: (BuildContext context, int position) { child: ListView.builder(
return PlansCompareFeedItemView(plans[position], this, _setCompare); itemCount: plans.length,
}), itemBuilder: (BuildContext context, int position) {
GestureDetector( return PlansCompareFeedItemView(
plans[position], this, _setCompare);
}),
),
Divider(height: 0.5, color: Color(0xFFE5E5E5)),
GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () => onClickCompare(), onTap: () => onClickCompare(),
child: Container( child: Container(
color: Colors.white, margin: EdgeInsets.only(left: 15, right: 15, top: 7.5, bottom: 7.5),
child: Column( width: double.maxFinite,
mainAxisSize: MainAxisSize.min, height: 40,
children: <Widget>[ decoration: BoxDecoration(
Divider(height: 0.5, color: Color(0xFFE5E5E5)), color: _compareColor, borderRadius: BorderRadius.circular(20)),
Container( alignment: Alignment.center,
margin: EdgeInsets.only( child: baseText("对比", 14, Colors.white, bold: true),
left: 15, right: 15, top: 7.5, bottom: 7.5), ),
width: double.maxFinite, )
height: 40, ],
decoration: BoxDecoration( );
color: _compareColor,
borderRadius: BorderRadius.circular(20)),
alignment: Alignment.center,
child: baseText("对比", 14, Colors.white, bold: true),
)
],
),
))
]);
} }
onClickCompare() { onClickCompare() {
......
...@@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart'; ...@@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart'; import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
class ProjectDetailsItemView extends StatelessWidget { class ProjectDetailsItemView extends StatelessWidget {
Groups listData; Groups listData;
...@@ -53,14 +54,16 @@ class ProjectDetailsItemView extends StatelessWidget { ...@@ -53,14 +54,16 @@ class ProjectDetailsItemView extends StatelessWidget {
Container( Container(
margin: EdgeInsets.only(right: 25.0, left: 15, bottom: 25), margin: EdgeInsets.only(right: 25.0, left: 15, bottom: 25),
width: 78, width: 78,
child: baseText(attrs.attrName, 13, Color(0xFF999999), child: baseText(attrs.attrName.empty() ? "无" : attrs.attrName, 13,
Color(0xFF999999),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis)), overflow: TextOverflow.ellipsis)),
Expanded( Expanded(
child: Container( child: Container(
margin: EdgeInsets.only(right: 15, bottom: 25), margin: EdgeInsets.only(right: 15, bottom: 25),
child: baseText(attrs.attrValue, 14, Color(0xFF282828), child: baseText(attrs.attrValue.empty() ? "无" : attrs.attrValue,
14, Color(0xFF282828),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis)), overflow: TextOverflow.ellipsis)),
......
...@@ -48,9 +48,9 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> { ...@@ -48,9 +48,9 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
title: "项目说明", title: "项目说明",
centerTitle: true, centerTitle: true,
backClick: () { backClick: () {
if(RouterCenterImpl().findMainRouter().isWithNative()){ if (RouterCenterImpl().findMainRouter().isWithNative()) {
FlutterBoost.singleton.closeCurrent(); FlutterBoost.singleton.closeCurrent();
}else{ } else {
Navigator.of(context).pop(); Navigator.of(context).pop();
} }
}), }),
...@@ -66,7 +66,8 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> { ...@@ -66,7 +66,8 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
initialData: _model.liveData.data ?? null, initialData: _model.liveData.data ?? null,
builder: (c, data) { builder: (c, data) {
if (_model.liveData.data == null) { if (_model.liveData.data == null) {
return loadingItem(); // return loadingItem();
return Container();
} }
ProjectDetailsItem item = data.data; ProjectDetailsItem item = data.data;
if (item == null || item.data == null || item.data.groups == null) { if (item == null || item.data == null || item.data.groups == null) {
......
...@@ -6,10 +6,12 @@ import 'package:cached_network_image/cached_network_image.dart'; ...@@ -6,10 +6,12 @@ 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/server/entity/LevelOneFeedList.dart'; import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/ClueModel/util/NumPlanUtil.dart';
import 'package:gm_flutter/ClueModel/view/FiveStarView.dart'; import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseUtil.dart'; import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart'; import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import 'package:gm_flutter/commonModel/util/NumberUtil.dart';
import 'package:gm_flutter/main.mark.dart'; import 'package:gm_flutter/main.mark.dart';
class LevelOneItem extends StatelessWidget { class LevelOneItem extends StatelessWidget {
...@@ -20,6 +22,7 @@ class LevelOneItem extends StatelessWidget { ...@@ -20,6 +22,7 @@ class LevelOneItem extends StatelessWidget {
Function(int planId) gotoPlan; Function(int planId) gotoPlan;
int position; int position;
String tabName; String tabName;
LevelOneItem(this.cards, LevelOneItem(this.cards,
{this.lowPrice, {this.lowPrice,
this.ask, this.ask,
...@@ -64,6 +67,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -64,6 +67,8 @@ class LevelOneItem extends StatelessWidget {
if (cards.doctor == null && isDebug) { if (cards.doctor == null && isDebug) {
throw new Exception(); throw new Exception();
} }
var price =
NumPlanUtil.getPrice(cards.doctor.minPrice, cards.doctor.maxPrice);
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
...@@ -104,7 +109,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -104,7 +109,8 @@ class LevelOneItem extends StatelessWidget {
top: 18, top: 18,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[ children: <Widget>[
baseText(cards.doctor.name, 15, Color(0xff333333), baseText(cards.doctor.name, 15, Color(0xff333333),
bold: true), bold: true),
...@@ -120,12 +126,19 @@ class LevelOneItem extends StatelessWidget { ...@@ -120,12 +126,19 @@ class LevelOneItem extends StatelessWidget {
top: 42, top: 42,
right: 0, right: 0,
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
baseText("¥", 12, Color(0xffFF5963)), price == "暂无报价"
baseText("${cards.doctor.minPrice}-${cards.doctor.maxPrice}", ? Container(
15, Color(0xffFF5963)), width: 0,
height: 0,
)
: baseText("¥", 12, Color(0xffFF5963)),
baseText(price, price == "暂无报价" ? 13 : 15,
price == "暂无报价" ? Color(0xff999999) : Color(0xffFF5963),
bold: price != "暂无报价")
], ],
), ),
), ),
...@@ -183,6 +196,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -183,6 +196,8 @@ class LevelOneItem extends StatelessWidget {
if (cards.hospital == null && isDebug) { if (cards.hospital == null && isDebug) {
throw new Exception(); throw new Exception();
} }
var price =
NumPlanUtil.getPrice(cards.hospital.minPrice, cards.hospital.maxPrice);
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
...@@ -209,6 +224,7 @@ class LevelOneItem extends StatelessWidget { ...@@ -209,6 +224,7 @@ class LevelOneItem extends StatelessWidget {
child: ClipOval( child: ClipOval(
child: CachedNetworkImage( child: CachedNetworkImage(
imageUrl: cards.hospital.portrait, imageUrl: cards.hospital.portrait,
fit: BoxFit.cover,
), ),
), ),
), ),
...@@ -226,15 +242,19 @@ class LevelOneItem extends StatelessWidget { ...@@ -226,15 +242,19 @@ class LevelOneItem extends StatelessWidget {
top: 42.5, top: 42.5,
right: 0, right: 0,
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
baseText("¥", 12, Color(0xffFF5963)), price == "暂无报价"
baseText( ? Container(
"${cards.hospital.minPrice}-${cards.hospital.maxPrice}", width: 0,
15, height: 0,
Color(0xffFF5963), )
bold: true), : baseText("¥", 12, Color(0xffFF5963)),
baseText(price, price == "暂无报价" ? 13 : 15,
price == "暂无报价" ? Color(0xff999999) : Color(0xffFF5963),
bold: price != "暂无报价")
], ],
), ),
), ),
...@@ -276,7 +296,11 @@ class LevelOneItem extends StatelessWidget { ...@@ -276,7 +296,11 @@ class LevelOneItem extends StatelessWidget {
Positioned( Positioned(
bottom: 63.5, bottom: 63.5,
left: 57, left: 57,
child: baseText(cards.hospital.address, 12, Color(0xff666666)), child: Container(
width: MediaQuery.of(context).size.width - 30 - 57,
child:
baseText(cards.hospital.address, 12, Color(0xff666666)),
),
), ),
Positioned( Positioned(
left: 57, left: 57,
...@@ -301,16 +325,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -301,16 +325,8 @@ class LevelOneItem extends StatelessWidget {
if (cards.plan == null && isDebug) { if (cards.plan == null && isDebug) {
throw new Exception(); throw new Exception();
} }
String price; String price =
if (cards.plan.minPrice.empty() && cards.plan.maxPrice.empty()) { NumPlanUtil.getPrice(cards.plan.minPrice, cards.plan.maxPrice);
price = "暂无报价";
} else if (cards.plan.minPrice.empty() && !cards.plan.maxPrice.empty()) {
price = "${cards.plan.maxPrice}";
} else if (!cards.plan.minPrice.empty() && cards.plan.maxPrice.empty()) {
price = "${cards.plan.minPrice}";
} else {
price = "${cards.plan.minPrice}-${cards.plan.maxPrice}";
}
return Container( return Container(
height: 118, height: 118,
margin: EdgeInsets.only(left: 15, right: 15), margin: EdgeInsets.only(left: 15, right: 15),
...@@ -330,7 +346,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -330,7 +346,8 @@ class LevelOneItem extends StatelessWidget {
top: 15, top: 15,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[ children: <Widget>[
price == "暂无报价" price == "暂无报价"
? Container( ? Container(
...@@ -358,8 +375,8 @@ class LevelOneItem extends StatelessWidget { ...@@ -358,8 +375,8 @@ class LevelOneItem extends StatelessWidget {
Positioned( Positioned(
top: 40, top: 40,
right: 0, right: 0,
child: baseText( child: baseText("指导价:${cards.plan.guide_price ?? "暂无报价"}", 11,
"指导价:${cards.plan.guide_price}", 11, Color(0xff666666)), Color(0xff666666)),
), ),
Positioned( Positioned(
left: 0, left: 0,
......
...@@ -150,6 +150,18 @@ class LevelOneListState extends State<LevelOneList> ...@@ -150,6 +150,18 @@ class LevelOneListState extends State<LevelOneList>
RouterCenterImpl().findMainRouter().jumpPage( RouterCenterImpl().findMainRouter().jumpPage(
context, data2.hospital.messageUrl, null, true); context, data2.hospital.messageUrl, null, true);
} else if (data2.cardType == "plan") { } else if (data2.cardType == "plan") {
if (CacheManager.getInstance()
.get(MEMORY_CACHE)
.get(USER_ID) ==
null &&
RouterCenterImpl()
.findMainRouter()
.isWithNative()) {
RouterCenterImpl()
.findMainRouter()
.jumpPage(context, "show_login", null, true);
return;
}
buried_on_click_button(index, "consult", buried_on_click_button(index, "consult",
"level_two_plan", "${data2.plan.plan_id}"); "level_two_plan", "${data2.plan.plan_id}");
BaseBottomPicker() BaseBottomPicker()
...@@ -180,7 +192,7 @@ class LevelOneListState extends State<LevelOneList> ...@@ -180,7 +192,7 @@ class LevelOneListState extends State<LevelOneList>
widget.index == 0 widget.index == 0
? "level_one_plan_compare" ? "level_one_plan_compare"
: "level_two_plan_compare", : "level_two_plan_compare",
{"planId": planId, "planType": 2}, map,
false); false);
}, },
tabName: _model.tab_type, tabName: _model.tab_type,
......
...@@ -314,7 +314,8 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -314,7 +314,8 @@ class LevelOneState extends BaseState<LevelOnePage>
top: 6, top: 6,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: <Widget>[ children: <Widget>[
baseText("好评率", 11, Color(0xff282828)), baseText("好评率", 11, Color(0xff282828)),
Container( Container(
......
...@@ -173,8 +173,11 @@ class MechanismBox implements IBottomPicker { ...@@ -173,8 +173,11 @@ class MechanismBox implements IBottomPicker {
// 机构列表 // 机构列表
Widget mechanismList(mq, keyHeight) { Widget mechanismList(mq, keyHeight) {
Hospital firstHospital = _levelModel.cardsLive.data[0].hospital;
firstHospital.isCheck = true;
doctor_ids.add(firstHospital.doctorId);
return Container( return Container(
height: mq.size.height - 140 - 96 - 50 - keyHeight, height: mq.size.height - 286 - keyHeight,
width: mq.size.width, width: mq.size.width,
padding: EdgeInsets.only(left: 15, right: 15), padding: EdgeInsets.only(left: 15, right: 15),
child: baseRefreshView(refreshController, () {}, null, null, child: baseRefreshView(refreshController, () {}, null, null,
...@@ -201,7 +204,7 @@ class MechanismBox implements IBottomPicker { ...@@ -201,7 +204,7 @@ class MechanismBox implements IBottomPicker {
} }
if (_levelModel.data[index].cardType == 'hospital') { if (_levelModel.data[index].cardType == 'hospital') {
return HospitalItem( return HospitalItem(
_levelModel.data[index].hospital); _levelModel.data[index].hospital, index);
} else { } else {
return Container(); return Container();
} }
...@@ -218,11 +221,11 @@ class MechanismBox implements IBottomPicker { ...@@ -218,11 +221,11 @@ class MechanismBox implements IBottomPicker {
} }
// 机构卡片 // 机构卡片
Widget HospitalItem(Hospital hospital) { Widget HospitalItem(Hospital hospital, index) {
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
if (doctor_ids.indexOf(hospital.doctorId) != -1) { if (doctor_ids.contains(hospital.doctorId)) {
doctor_ids.remove(hospital.doctorId); doctor_ids.remove(hospital.doctorId);
} else { } else {
doctor_ids.add(hospital.doctorId); doctor_ids.add(hospital.doctorId);
...@@ -230,6 +233,9 @@ class MechanismBox implements IBottomPicker { ...@@ -230,6 +233,9 @@ class MechanismBox implements IBottomPicker {
hospital.isCheck = !hospital.isCheck; hospital.isCheck = !hospital.isCheck;
focusNode.unfocus(); focusNode.unfocus();
_levelModel.cardsLive.notifyView(_levelModel.cardsLive.data); _levelModel.cardsLive.notifyView(_levelModel.cardsLive.data);
if (doctor_ids.length > 3 || doctor_ids.length == 0) {
NativeToast.showNativeToast('请选择1-3个机构咨询');
}
}, },
child: Container( child: Container(
height: 91.5, height: 91.5,
......
...@@ -68,12 +68,13 @@ class PlanBarView extends StatelessWidget { ...@@ -68,12 +68,13 @@ class PlanBarView extends StatelessWidget {
alignment: Alignment.center, alignment: Alignment.center,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[ children: <Widget>[
baseText(text, 14, baseText(text, 14,
index == showIndex ? Color(0xff3FB5AF) : Color(0xff666666)), index == showIndex ? Color(0xff3FB5AF) : Color(0xff666666)),
Container( Container(
width: 10, width: 10,
height: 10, height: 13,
padding: EdgeInsets.only(top: 3), padding: EdgeInsets.only(top: 3),
alignment: Alignment.topCenter, alignment: Alignment.topCenter,
child: Container( child: Container(
......
...@@ -15,8 +15,9 @@ class PlanItem extends StatelessWidget { ...@@ -15,8 +15,9 @@ class PlanItem extends StatelessWidget {
final Plans plans; final Plans plans;
final int pos; final int pos;
final bool isPlanPage; final bool isPlanPage;
String tabName;
PlanItem(this.plans, this.pos, this.isPlanPage); PlanItem(this.plans, this.pos, this.isPlanPage, this.tabName);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -27,8 +28,8 @@ class PlanItem extends StatelessWidget { ...@@ -27,8 +28,8 @@ class PlanItem extends StatelessWidget {
if (i != plans.baseAttrs.length - 1) { if (i != plans.baseAttrs.length - 1) {
list.add(Container( list.add(Container(
width: 8.5, width: 8.5,
height: 8, height: 10,
alignment: Alignment.center, alignment: Alignment.topCenter,
child: Container( child: Container(
width: 0.5, width: 0.5,
height: 8, height: 8,
...@@ -46,10 +47,11 @@ class PlanItem extends StatelessWidget { ...@@ -46,10 +47,11 @@ class PlanItem extends StatelessWidget {
rate = rate.split(".")[0]; rate = rate.split(".")[0];
} }
rate = rate.replaceAll("%", ""); rate = rate.replaceAll("%", "");
var price = NumPlanUtil.getPrice(plans.minPrice, plans.maxPrice);
return Container( return Container(
margin: EdgeInsets.only(top: 10, left: 10, right: 10), margin: EdgeInsets.only(top: 10, left: 10, right: 10),
child: Card( child: Card(
elevation: 1.0, elevation: 3.0,
child: Container( child: Container(
height: 90, height: 90,
decoration: BoxDecoration( decoration: BoxDecoration(
...@@ -79,7 +81,7 @@ class PlanItem extends StatelessWidget { ...@@ -79,7 +81,7 @@ class PlanItem extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
Container( Container(
constraints: BoxConstraints(maxWidth: 110), constraints: BoxConstraints(maxWidth: 95),
child: baseText(plans.name, 14, Color(0xff282828), child: baseText(plans.name, 14, Color(0xff282828),
bold: true), bold: true),
), ),
...@@ -110,9 +112,9 @@ class PlanItem extends StatelessWidget { ...@@ -110,9 +112,9 @@ class PlanItem extends StatelessWidget {
top: 15, top: 15,
right: 10, right: 10,
child: Row( child: Row(
textBaseline: TextBaseline.alphabetic,
crossAxisAlignment: CrossAxisAlignment.baseline,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.end,
verticalDirection: VerticalDirection.down,
children: <Widget>[ children: <Widget>[
baseText("好评率", 11, Color(0xff282828)), baseText("好评率", 11, Color(0xff282828)),
Container( Container(
...@@ -124,7 +126,7 @@ class PlanItem extends StatelessWidget { ...@@ -124,7 +126,7 @@ class PlanItem extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
bottom: 14, bottom: 16,
right: 10, right: 10,
child: child:
baseText("销量${plans.salesCount}", 11, Color(0xff282828)), baseText("销量${plans.salesCount}", 11, Color(0xff282828)),
...@@ -133,13 +135,23 @@ class PlanItem extends StatelessWidget { ...@@ -133,13 +135,23 @@ class PlanItem extends StatelessWidget {
left: 91, left: 91,
bottom: 14, bottom: 14,
child: Row( child: Row(
verticalDirection: VerticalDirection.down, textBaseline: TextBaseline.alphabetic,
crossAxisAlignment: CrossAxisAlignment.baseline,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
baseText("¥", 10, Color(0xffFF5963)), price == "暂无报价"
baseText("${plans.minPrice}-${plans.maxPrice}", 13, ? Container(
Color(0xffFF5963), width: 0,
bold: true), height: 0,
)
: baseText("¥", 12, Color(0xffFF5963)),
baseText(
price,
price == "暂无报价" ? 13 : 15,
price == "暂无报价"
? Color(0xff999999)
: Color(0xffFF5963),
bold: price != "暂无报价")
], ],
), ),
), ),
...@@ -148,7 +160,7 @@ class PlanItem extends StatelessWidget { ...@@ -148,7 +160,7 @@ class PlanItem extends StatelessWidget {
top: 36, top: 36,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.end,
children: list, children: list,
), ),
) )
...@@ -156,24 +168,25 @@ class PlanItem extends StatelessWidget { ...@@ -156,24 +168,25 @@ class PlanItem extends StatelessWidget {
), ),
), ),
).gestureDetector(() { ).gestureDetector(() {
Map<String, dynamic> map; Map<String, dynamic> buriedMap = {
map = { "tab_name": tabName,
"tab_name": isPlanPage ? "plan_home" : "",
"position": pos, "position": pos,
"card_id": plans.id, "card_id": plans.id,
"card_type": "card", "card_type": "card",
"transaction_type": "", "transaction_type": "",
"card_content_type": "level_one_plan" "card_content_type": "level_one_plan"
}; };
RouterCenterImpl().findMainRouter().buriedEvent("on_click_card", map); RouterCenterImpl()
Map<String, dynamic> buriedMap = { .findMainRouter()
.buriedEvent("on_click_card", buriedMap);
Map<String, dynamic> map = {
"business_id": "${plans.id}", "business_id": "${plans.id}",
"planId": plans.id, "planId": plans.id,
"title": "${plans.name}" "title": "${plans.name}"
}; };
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.jumpPage(context, "level_one_plan_detail", buriedMap, false); .jumpPage(context, "level_one_plan_detail", map, false);
})); }));
} }
} }
...@@ -64,7 +64,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -64,7 +64,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
@override @override
void initState() { void initState() {
print("LSY PLAN INIT "); print("LSY PLAN INIT ");
DioUtil.getInstance().setProxy("172.30.9.128"); // DioUtil.getInstance().setProxy("172.30.9.128");
_model.init(needCache: true); _model.init(needCache: true);
super.initState(); super.initState();
planBarView = planBarView =
...@@ -404,7 +404,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -404,7 +404,8 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
} else { } else {
refreshController.loadComplete(); refreshController.loadComplete();
} }
return PlanItem(_model.feedDatas[index], index, true); return PlanItem(
_model.feedDatas[index], index, true, "");
}, },
childCount: _model.feedDatas.length, childCount: _model.feedDatas.length,
), ),
...@@ -424,7 +425,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -424,7 +425,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
Widget towPic() { Widget towPic() {
return Container( return Container(
height: 90, height: 90,
margin: EdgeInsets.only(left: 15, right: 15, top: 15, bottom: 0), margin: EdgeInsets.only(left: 15, right: 15, top: 0, bottom: 0),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
...@@ -497,9 +498,9 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin { ...@@ -497,9 +498,9 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black12, color: Colors.black12,
offset: Offset(0.0, 2.0),
blurRadius: 0.5, blurRadius: 0.5,
spreadRadius: 0.5 spreadRadius: 0.5)
)
], ],
color: Colors.white, color: Colors.white,
), ),
......
...@@ -16,8 +16,8 @@ class TopList extends StatefulWidget { ...@@ -16,8 +16,8 @@ class TopList extends StatefulWidget {
final int id; final int id;
double topHeight; double topHeight;
final String rankId; final String rankId;
String tabName;
TopList(this.rankId, this.id, this.topHeight); TopList(this.rankId, this.id, this.topHeight, this.tabName);
@override @override
State<StatefulWidget> createState() => TopListState(); State<StatefulWidget> createState() => TopListState();
...@@ -88,7 +88,8 @@ class TopListState extends State<TopList> with AutomaticKeepAliveClientMixin { ...@@ -88,7 +88,8 @@ class TopListState extends State<TopList> with AutomaticKeepAliveClientMixin {
itemExtent: 100, itemExtent: 100,
delegate: SliverChildBuilderDelegate( delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) { (BuildContext context, int index) {
return PlanItem(_model.datas[index], index, false); return PlanItem(
_model.datas[index], index, false, widget.tabName);
}, },
childCount: _model.datas.length, childCount: _model.datas.length,
), ),
...@@ -112,7 +113,7 @@ class TopListState extends State<TopList> with AutomaticKeepAliveClientMixin { ...@@ -112,7 +113,7 @@ class TopListState extends State<TopList> with AutomaticKeepAliveClientMixin {
], ],
), onLoading: () { ), onLoading: () {
_model.loadMore(); _model.loadMore();
}, pullDown: false, pullUp: true,loadMoreColor: Color(0xffF7F6FA)); }, pullDown: false, pullUp: true, loadMoreColor: Color(0xffF7F6FA));
} }
@override @override
......
...@@ -160,7 +160,8 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin { ...@@ -160,7 +160,8 @@ class TopPageState extends BaseState<TopPage> with TickerProviderStateMixin {
for (int i = 0; i < _model.tabs.length; i++) { for (int i = 0; i < _model.tabs.length; i++) {
list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget( list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget(
Key("Tab${i}"), Key("Tab${i}"),
TopList(widget.id, _model.tabs[i].id, kToolbarHeight + d))); TopList(widget.id, _model.tabs[i].id, kToolbarHeight + d,
_model.tabs[i].name)));
} }
return extend.NestedScrollView( return extend.NestedScrollView(
innerScrollPositionKeyBuilder: () { innerScrollPositionKeyBuilder: () {
......
...@@ -6,7 +6,7 @@ class PlanBean { ...@@ -6,7 +6,7 @@ class PlanBean {
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;
......
...@@ -5,184 +5,203 @@ ...@@ -5,184 +5,203 @@
* @Last Modified time: 2020-07-01 20:31:42 * @Last Modified time: 2020-07-01 20:31:42
*/ */
class PlanCompareDetail { class PlanCompareDetail {
int error; int error;
String message; String message;
Map extra; Map extra;
Map errorExtra; int errorCode;
UserType userType; Map errorExtra;
Data data; Data data;
UserType userType;
PlanCompareDetail({this.error, this.message, this.extra, this.errorExtra, this.userType, this.data});
PlanCompareDetail(
PlanCompareDetail.fromJson(Map<String, dynamic> json) { {this.error,
error = json['error']; this.message,
message = json['message']; this.extra,
extra = json['extra']; this.errorCode,
errorExtra = json['error_extra']; this.errorExtra,
userType = json['user_type'] != null ? new UserType.fromJson(json['user_type']) : null; this.data,
data = json['data'] != null ? new Data.fromJson(json['data']) : null; this.userType});
}
PlanCompareDetail.fromJson(Map<String, dynamic> json) {
Map<String, dynamic> toJson() { error = json['error'];
final Map<String, dynamic> data = new Map<String, dynamic>(); message = json['message'];
data['error'] = this.error; extra = json['extra'];
data['message'] = this.message; errorCode = json['error_code'];
data['extra'] = this.extra; errorExtra = json['error_extra'];
data['error_extra'] = this.errorExtra; data = json['data'] != null ? new Data.fromJson(json['data']) : null;
if (this.userType != null) { userType = json['user_type'] != null
data['user_type'] = this.userType.toJson(); ? new UserType.fromJson(json['user_type'])
} : null;
if (this.data != null) { }
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['error'] = this.error;
data['message'] = this.message;
data['extra'] = this.extra;
data['error_code'] = this.errorCode;
data['error_extra'] = this.errorExtra;
if (this.data != null) {
data['data'] = this.data.toJson(); data['data'] = this.data.toJson();
} }
return data; if (this.userType != null) {
} data['user_type'] = this.userType.toJson();
}
return data;
}
} }
class UserType { class Data {
List<PlansInfoDetail> plansInfo;
List<Groups> groups;
UserType();
UserType.fromJson(Map<String, dynamic> json) { Data({this.plansInfo, this.groups});
}
Map<String, dynamic> toJson() { Data.fromJson(Map<String, dynamic> json) {
final Map<String, dynamic> data = new Map<String, dynamic>(); if (json['plans_info'] != null) {
return data; plansInfo = new List<PlansInfoDetail>();
} json['plans_info'].forEach((v) {
} plansInfo.add(new PlansInfoDetail.fromJson(v));
});
}
if (json['groups'] != null) {
groups = new List<Groups>();
json['groups'].forEach((v) {
groups.add(new Groups.fromJson(v));
});
}
}
class Data { Map<String, dynamic> toJson() {
List<PlansInfoDetail> plansInfo; final Map<String, dynamic> data = new Map<String, dynamic>();
List<Groups> groups; if (this.plansInfo != null) {
Data({this.plansInfo, this.groups});
Data.fromJson(Map<String, dynamic> json) {
if (json['plans_info'] != null) {
plansInfo = new List<PlansInfoDetail>();
json['plans_info'].forEach((v) { plansInfo.add(new PlansInfoDetail.fromJson(v)); });
}
if (json['groups'] != null) {
groups = new List<Groups>();
json['groups'].forEach((v) { groups.add(new Groups.fromJson(v)); });
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.plansInfo != null) {
data['plans_info'] = this.plansInfo.map((v) => v.toJson()).toList(); data['plans_info'] = this.plansInfo.map((v) => v.toJson()).toList();
} }
if (this.groups != null) { if (this.groups != null) {
data['groups'] = this.groups.map((v) => v.toJson()).toList(); data['groups'] = this.groups.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
} }
class PlansInfoDetail { class PlansInfoDetail {
int planId; int planId;
String planName; String planName;
String minPrice; String price;
String maxPrice; String min_price;
String max_price;
PlansInfoDetail({this.planId, this.planName, this.minPrice, this.maxPrice});
PlansInfoDetail({this.planId, this.planName, this.price});
PlansInfoDetail.fromJson(Map<String, dynamic> json) {
planId = json['plan_id']; PlansInfoDetail.fromJson(Map<String, dynamic> json) {
planName = json['plan_name']; planId = json['plan_id'];
minPrice = json['min_price']; planName = json['plan_name'];
maxPrice = json['max_price']; min_price = json['min_price'];
} max_price = json['max_price'];
price = json['price'];
Map<String, dynamic> toJson() { }
final Map<String, dynamic> data = new Map<String, dynamic>();
data['plan_id'] = this.planId; Map<String, dynamic> toJson() {
data['plan_name'] = this.planName; final Map<String, dynamic> data = new Map<String, dynamic>();
data['min_price'] = this.minPrice; data['plan_id'] = this.planId;
data['max_price'] = this.maxPrice; data['min_price'] = this.min_price;
return data; data['max_price'] = this.max_price;
} data['plan_name'] = this.planName;
data['price'] = this.price;
return data;
}
} }
class Groups { class Groups {
String groupType; String groupType;
String groupName; String groupName;
List<Plans> plans; List<Plans> plans;
Groups({this.groupType, this.groupName, this.plans}); Groups({this.groupType, this.groupName, this.plans});
Groups.fromJson(Map<String, dynamic> json) { Groups.fromJson(Map<String, dynamic> json) {
groupType = json['group_type']; groupType = json['group_type'];
groupName = json['group_name']; groupName = json['group_name'];
if (json['plans'] != null) { if (json['plans'] != null) {
plans = new List<Plans>(); plans = new List<Plans>();
json['plans'].forEach((v) { plans.add(new Plans.fromJson(v)); }); json['plans'].forEach((v) {
} plans.add(new Plans.fromJson(v));
} });
}
Map<String, dynamic> toJson() { }
final Map<String, dynamic> data = new Map<String, dynamic>();
data['group_type'] = this.groupType; Map<String, dynamic> toJson() {
data['group_name'] = this.groupName; final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.plans != null) { data['group_type'] = this.groupType;
data['group_name'] = this.groupName;
if (this.plans != null) {
data['plans'] = this.plans.map((v) => v.toJson()).toList(); data['plans'] = this.plans.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
} }
class Plans { class Plans {
int planId; int planId;
String positiveRate; List<Attrs> attrs;
String salesCount; String positiveRate;
List<Attrs> attrs; String salesCount;
int planStart;
Plans({this.planId, this.positiveRate, this.salesCount, this.attrs});
Plans({this.planId, this.attrs});
Plans.fromJson(Map<String, dynamic> json) {
planId = json['plan_id']; Plans.fromJson(Map<String, dynamic> json) {
positiveRate = json['positive_rate']; planId = json['plan_id'];
salesCount = json['sales_count']; positiveRate = json['positive_rate'];
if (json['attrs'] != null) { salesCount = json['sales_count'];
attrs = new List<Attrs>(); planStart = json['plan_start'];
json['attrs'].forEach((v) { attrs.add(new Attrs.fromJson(v)); }); if (json['attrs'] != null) {
} attrs = new List<Attrs>();
} json['attrs'].forEach((v) {
attrs.add(new Attrs.fromJson(v));
Map<String, dynamic> toJson() { });
final Map<String, dynamic> data = new Map<String, dynamic>(); }
data['plan_id'] = this.planId; }
data['positive_rate'] = this.positiveRate;
data['sales_count'] = this.salesCount; Map<String, dynamic> toJson() {
if (this.attrs != null) { final Map<String, dynamic> data = new Map<String, dynamic>();
data['plan_id'] = this.planId;
data['positive_rate'] = this.positiveRate;
data['sales_count'] = this.salesCount;
data['plan_start'] = this.planStart;
if (this.attrs != null) {
data['attrs'] = this.attrs.map((v) => v.toJson()).toList(); data['attrs'] = this.attrs.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
} }
class Attrs { class Attrs {
String attrName; String attrName;
String attrValue; String attrValue;
Attrs({this.attrName, this.attrValue}); Attrs({this.attrName, this.attrValue});
Attrs.fromJson(Map<String, dynamic> json) { Attrs.fromJson(Map<String, dynamic> json) {
attrName = json['attr_name']; attrName = json['attr_name'];
attrValue = json['attr_value']; attrValue = json['attr_value'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['attr_name'] = this.attrName; data['attr_name'] = this.attrName;
data['attr_value'] = this.attrValue; data['attr_value'] = this.attrValue;
return data; return data;
} }
} }
class UserType {
UserType();
UserType.fromJson(Map<String, dynamic> json) {}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
return data;
}
}
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* @date 2020/7/10 * @date 2020/7/10
**/ **/
import 'package:common_utils/common_utils.dart'; import 'package:common_utils/common_utils.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
class NumPlanUtil { class NumPlanUtil {
static String getSale(String sale) { static String getSale(String sale) {
...@@ -24,4 +25,20 @@ class NumPlanUtil { ...@@ -24,4 +25,20 @@ class NumPlanUtil {
static formatNum(double num, int postion) { static formatNum(double num, int postion) {
return (NumUtil.getNumByValueDouble(num, postion)).toStringAsFixed(postion); return (NumUtil.getNumByValueDouble(num, postion)).toStringAsFixed(postion);
} }
static String getPrice(String min, String max) {
String price;
if (min.empty() && max.empty()) {
price = "暂无报价";
} else if (min.empty() && !max.empty()) {
price = "${max}";
} else if (!min.empty() && max.empty()) {
price = "${min}";
} else if (min == max) {
price = "${max}";
} else {
price = "${min}-${max}";
}
return price;
}
} }
...@@ -8,36 +8,72 @@ class FiveStarView extends StatelessWidget { ...@@ -8,36 +8,72 @@ class FiveStarView extends StatelessWidget {
final int allStarCount; final int allStarCount;
final int lightStarCount; final int lightStarCount;
String starAssets; String starAssets;
bool isForward = false;
FiveStarView(this.lightStarCount, this.allStarCount, {this.starAssets}); FiveStarView(this.lightStarCount, this.allStarCount,
{this.starAssets, this.isForward}) {
if (isForward == null) {
isForward = false;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
List<Widget> list = new List(); List<Widget> list = new List();
for (int i = 0; i < allStarCount; i++) { if (isForward) {
if (i <= lightStarCount) { for (int i = 0; i < allStarCount; i++) {
list.add(Container( if (i >= allStarCount - lightStarCount) {
height: 13, list.add(Container(
width: 13, height: 13,
child: Image.asset(starAssets ?? "assets/sel_star.png"), width: 13,
)); child: Image.asset(starAssets ?? "assets/sel_star.png"),
if ( i != allStarCount - 1) { ));
if (i != allStarCount - 1) {
list.add(Container(
height: 1,
width: 2,
));
}
} else {
list.add(Container( list.add(Container(
height: 1, height: 13,
width: 2, width: 13,
child: Image.asset("assets/normal_star.png"),
)); ));
if (i != allStarCount - 1) {
list.add(Container(
height: 1,
width: 2,
));
}
} }
} else { }
list.add(Container( } else {
height: 13, for (int i = 0; i < allStarCount; i++) {
width: 13, if (i < lightStarCount) {
child: Image.asset("assets/normal_star.png"), list.add(Container(
)); height: 13,
if ( i != allStarCount - 1) { width: 13,
child: Image.asset(starAssets ?? "assets/sel_star.png"),
));
if (i != allStarCount - 1) {
list.add(Container(
height: 1,
width: 2,
));
}
} else {
list.add(Container( list.add(Container(
height: 1, height: 13,
width: 2, width: 13,
child: Image.asset("assets/normal_star.png"),
)); ));
if (i != allStarCount - 1) {
list.add(Container(
height: 1,
width: 2,
));
}
} }
} }
} }
......
...@@ -15,11 +15,14 @@ abstract class MainRouter extends RouterBaser { ...@@ -15,11 +15,14 @@ abstract class MainRouter extends RouterBaser {
void buriedEvent(String name, Map<String, dynamic> map); void buriedEvent(String name, Map<String, dynamic> map);
void jumpPage(BuildContext context,String pageName, Map<String, dynamic> params,bool nativePage); void jumpPage(BuildContext context, String pageName,
Map<String, dynamic> params, bool nativePage);
Widget getProxyPage(); Widget getProxyPage();
void catchErrorToBugly(String err); void catchErrorToBugly(String err);
bool isWithNative(); bool isWithNative();
void jumpToSetting();
} }
...@@ -47,4 +47,9 @@ class MainRouterImpl implements MainRouter { ...@@ -47,4 +47,9 @@ class MainRouterImpl implements MainRouter {
bool isWithNative() { bool isWithNative() {
return MainManager.getInstance().isInit; return MainManager.getInstance().isInit;
} }
@override
void jumpToSetting() {
MainManager.getInstance().jumpToSetting();
}
} }
...@@ -118,21 +118,12 @@ class MainManager { ...@@ -118,21 +118,12 @@ class MainManager {
} }
} }
void getInitParams(VoidCallback callback) { void jumpToSetting() {
if (isInit) { if (!isInit) {
if (flutterChannel != null) { return;
flutterChannel.invokeMethod("get_common_params").then((data) { }
if (data is Map) { if (flutterChannel != null) {
var map = Map<String, dynamic>.from(data); flutterChannel.invokeMethod("check_system_settings", "");
initParams(map, callback: callback);
}
}).whenComplete(() {
// callback();
});
return;
}
} }
callback();
} }
} }
...@@ -30,12 +30,12 @@ class TestState extends BaseState<TestPage> { ...@@ -30,12 +30,12 @@ class TestState extends BaseState<TestPage> {
list.add(listItem("一级列表页", () { list.add(listItem("一级列表页", () {
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.jumpPage(context, "level_one_plan_detail", {"planId": 137}, false); .jumpPage(context, "level_one_plan_detail", {"planId": 647}, false);
})); }));
list.add(listItem("二级列表页", () { list.add(listItem("二级列表页", () {
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.jumpPage(context, "level_two_plan_deatil", {"planId": 192}, false); .jumpPage(context, "level_two_plan_deatil", {"planId": 696}, false);
})); }));
list.add(listItem("项目首页", () { list.add(listItem("项目首页", () {
RouterCenterImpl() RouterCenterImpl()
...@@ -77,7 +77,7 @@ class TestState extends BaseState<TestPage> { ...@@ -77,7 +77,7 @@ class TestState extends BaseState<TestPage> {
@override @override
Widget buildItem(BuildContext context) { Widget buildItem(BuildContext context) {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE, CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393"); "_gtid=c14659b0c25b11ea80d77a872bf3b5437841;sessionid=0r8emll1qcqay0vz44hhgf4j1014vgxq;_gm_token=ba7e621594369445;");
return Scaffold( return Scaffold(
appBar: baseAppBar( appBar: baseAppBar(
title: "测试页面", title: "测试页面",
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
* @date 2019-10-13 * @date 2019-10-13
**/ **/
import 'package:app_settings/app_settings.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
...@@ -11,6 +10,7 @@ import 'package:flutter_common/commonModel/live/LiveData.dart'; ...@@ -11,6 +10,7 @@ import 'package:flutter_common/commonModel/live/LiveData.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart'; import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart'; import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import 'package:gm_flutter/commonModel/view/baseTabIndicator.dart'; import 'package:gm_flutter/commonModel/view/baseTabIndicator.dart';
import 'package:gm_flutter/main.mark.dart';
import 'package:lottie/lottie.dart'; import 'package:lottie/lottie.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
...@@ -84,11 +84,13 @@ Text baseText(String text, double fontSize, Color color, ...@@ -84,11 +84,13 @@ Text baseText(String text, double fontSize, Color color,
{bool bold = false, {bool bold = false,
TextAlign textAlign, TextAlign textAlign,
int maxLines = 1, int maxLines = 1,
TextOverflow overflow}) { TextOverflow overflow,
bool isWarp = false}) {
return Text( return Text(
text, text,
textAlign: textAlign ?? TextAlign.start, textAlign: textAlign ?? TextAlign.start,
textScaleFactor: 1.0, textScaleFactor: 1.0,
softWrap: isWarp,
style: TextStyle( style: TextStyle(
decoration: TextDecoration.none, decoration: TextDecoration.none,
fontSize: fontSize, fontSize: fontSize,
...@@ -209,7 +211,7 @@ Widget errorItem(double width, double height, VoidCallback retry, ...@@ -209,7 +211,7 @@ Widget errorItem(double width, double height, VoidCallback retry,
alignment: Alignment.center, alignment: Alignment.center,
child: baseText("检查网络设置", 16, Color(0xffFF5963)), child: baseText("检查网络设置", 16, Color(0xffFF5963)),
).gestureDetector(() { ).gestureDetector(() {
AppSettings.openWIFISettings(); RouterCenterImpl().findMainRouter().jumpToSetting();
}), }),
], ],
))); )));
...@@ -432,9 +434,9 @@ Widget baseTabBar( ...@@ -432,9 +434,9 @@ Widget baseTabBar(
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black12, color: Colors.black12,
offset: Offset(0.0, 2.0),
blurRadius: 0.5, blurRadius: 0.5,
spreadRadius: 0.5 spreadRadius: 0.5)
)
], ],
), ),
child: TabBar( child: TabBar(
......
...@@ -123,7 +123,7 @@ class DioInterceptorManager { ...@@ -123,7 +123,7 @@ class DioInterceptorManager {
print("请求之前 onRequest${opt.uri}${opt.queryParameters}${opt.headers}"); print("请求之前 onRequest${opt.uri}${opt.queryParameters}${opt.headers}");
}, onResponse: (response) { }, onResponse: (response) {
print("响应之前 onResponse${response}"); print("响应之前 ");
}, onError: (e) { }, onError: (e) {
print("网络错误 $e message ${e.message}"); print("网络错误 $e message ${e.message}");
}); });
......
...@@ -43,14 +43,15 @@ class _MD2Painter extends BoxPainter { ...@@ -43,14 +43,15 @@ class _MD2Painter extends BoxPainter {
void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) { void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
assert(configuration != null); assert(configuration != null);
assert(configuration.size != null); assert(configuration.size != null);
double width = (configuration.size.width-50) / 3.0 * 2.0;
Rect rect = Offset( Rect rect = Offset(
offset.dx + offset.dx +
configuration.size.width / 2 - configuration.size.width / 2 -
decoration.indicatorWidth / 2, width / 2,
(configuration.size.height - (configuration.size.height -
decoration.indicatorHeight - decoration.indicatorHeight -
decoration.indicatorPaddingBottom)) & decoration.indicatorPaddingBottom)) &
Size(decoration.indicatorWidth, decoration.indicatorHeight); Size(width, decoration.indicatorHeight);
final Paint paint = Paint(); final Paint paint = Paint();
paint.color = decoration.indicatorColor; paint.color = decoration.indicatorColor;
......
...@@ -15,13 +15,6 @@ packages: ...@@ -15,13 +15,6 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.39.11" version: "0.39.11"
app_settings:
dependency: "direct main"
description:
name: app_settings
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.1+1"
archive: archive:
dependency: transitive dependency: transitive
description: description:
......
...@@ -8,16 +8,16 @@ environment: ...@@ -8,16 +8,16 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
# cupertino_icons: ^0.1.3 # cupertino_icons: ^0.1.3
cached_network_image: ^2.2.0+1 cached_network_image: ^2.2.0+1
flutter_boost: flutter_boost:
git: git:
url: 'https://github.com/alibaba/flutter_boost.git' url: "https://github.com/alibaba/flutter_boost.git"
ref: 'v1.17.1-hotfixes' ref: "v1.17.1-hotfixes"
flutter_common: flutter_common:
git: git:
url: 'https://github.com/asd451398533/flutter_common.git' url: "https://github.com/asd451398533/flutter_common.git"
ref: '8175a0900ac0244040289488b86c5a98c45b0e94' ref: "8175a0900ac0244040289488b86c5a98c45b0e94"
#网络库 #网络库
dio: ^3.0.0 dio: ^3.0.0
dio_cookie_manager: ^1.0.0 dio_cookie_manager: ^1.0.0
...@@ -32,17 +32,15 @@ dependencies: ...@@ -32,17 +32,15 @@ dependencies:
#轻量级存储 #轻量级存储
shared_preferences: ^0.5.7+1 shared_preferences: ^0.5.7+1
lottie: ^0.4.0+1 lottie: ^0.4.0+1
app_settings: ^4.0.1+1
extended_nested_scroll_view: ^1.0.0 extended_nested_scroll_view: ^1.0.0
#适配库 #适配库
flutter_screenutil: ^1.1.0 flutter_screenutil: ^1.1.0
common_utils: ^1.2.1 common_utils: ^1.2.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
source_gen: '>=0.8.0' source_gen: ">=0.8.0"
build_runner: ^1.9.0 build_runner: ^1.9.0
flutter: flutter:
......
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