Commit f1b32e38 authored by 林生雨's avatar 林生雨

w

parent a2652a11
......@@ -9,6 +9,7 @@ import 'dart:math';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:gm_flutter/ClueModel/page/PlanCompareDetail/PlanCompareDetailModel.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanCompareDetail.dart';
import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
......@@ -17,6 +18,8 @@ import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'dart:convert';
import 'package:gm_flutter/main.mark.dart';
class PlanCompareDetailPage extends StatefulWidget {
String _planIds;
......@@ -52,7 +55,11 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
title: "对比详情",
centerTitle: true,
backClick: () {
Navigator.pop(context);
if(RouterCenterImpl().findMainRouter().isWithNative()){
FlutterBoost.singleton.closeCurrent();
}else{
Navigator.of(context).pop();
}
}),
body: Container(
child: reloadPage(),
......
......@@ -5,6 +5,7 @@
**/
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:gm_flutter/ClueModel/page/PlansCompareFeed/PlansCompareFeedModel.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlansCompareFeed.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
......@@ -55,7 +56,11 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
title: "方案对比",
centerTitle: true,
backClick: () {
Navigator.pop(context);
if(RouterCenterImpl().findMainRouter().isWithNative()){
FlutterBoost.singleton.closeCurrent();
}else{
Navigator.of(context).pop();
}
}),
body: Center(
child: getBody(),
......
......@@ -5,11 +5,13 @@
**/
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:gm_flutter/ClueModel/page/ProjectDetails/ProjectDetailsItemView.dart';
import 'package:gm_flutter/ClueModel/page/ProjectDetails/ProjectDetailsModel.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import '../../../main.mark.dart';
import '../../server/entity/ProjectDetailsItem.dart';
class ProjectDetailsPage extends StatefulWidget {
......@@ -46,7 +48,11 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
title: "项目说明",
centerTitle: true,
backClick: () {
Navigator.pop(context);
if(RouterCenterImpl().findMainRouter().isWithNative()){
FlutterBoost.singleton.closeCurrent();
}else{
Navigator.of(context).pop();
}
}),
body: Container(
child: getBody(),
......
......@@ -34,9 +34,12 @@ class LevelOneListModel extends BaseModel {
DioUtil.getInstance().getDio(), plan_id, tab_type, page)
.listen((event) {
if (event.error == 0) {
if ((event.data.cards == null || event.data.cards.isEmpty) &&
page == 1) {
stateLive.notifyView(EMPTY);
if ((event.data.cards == null || event.data.cards.isEmpty)) {
if (page == 1) {
stateLive.notifyView(EMPTY);
} else {
cardsLive.notifyView([]);
}
} else {
data.addAll(event.data.cards);
cardsLive.notifyView(data);
......
......@@ -10,6 +10,7 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'
as extend;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter_common/commonModel/picker/base/BaseBottomPicker.dart';
import 'package:gm_flutter/ClueModel/page/DiscussLowPrice/DiscussLowPricePopView.dart';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.dart';
......@@ -175,7 +176,11 @@ class LevelOneState extends BaseState<LevelOnePage>
baseSliverTitle(
"title", MediaQuery.of(context).size.width, _model.textLive),
baseSliverBack(() {
Navigator.of(context).pop();
if (RouterCenterImpl().findMainRouter().isWithNative()) {
FlutterBoost.singleton.closeCurrent();
} else {
Navigator.of(context).pop();
}
}),
],
);
......@@ -299,7 +304,9 @@ class LevelOneState extends BaseState<LevelOnePage>
baseText("好评率", 11, Color(0xff282828)),
Container(
margin: EdgeInsets.only(left: 4),
child: baseText("${_model.planoverItem.positiveRate}", 20,
child: baseText(
"${_model.planoverItem.positiveRate.contains(".") ? _model.planoverItem.positiveRate.split(".")[0] : _model.planoverItem.positiveRate}",
20,
Color(0xffFF5963)),
),
// baseText("%", 11, Color(0xffFF5963)),
......
......@@ -11,6 +11,7 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'
as extend;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter_common/commonModel/picker/base/BaseBottomPicker.dart';
import 'package:gm_flutter/ClueModel/page/DiscussLowPrice/DiscussLowPricePopView.dart';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.dart';
......@@ -181,7 +182,11 @@ class LevelTwoState extends BaseState<LevelTwoPage>
),
),
baseSliverBack(() {
Navigator.of(context).pop();
if(RouterCenterImpl().findMainRouter().isWithNative()){
FlutterBoost.singleton.closeCurrent();
}else{
Navigator.of(context).pop();
}
}),
],
);
......
......@@ -8,7 +8,7 @@ import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/ClueModel/page/mechanismBox/MechanismModel.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'package:gm_flutter/commonModel/net/DioUtil.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import 'package:gm_flutter/main.mark.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
......@@ -25,6 +25,8 @@ class MechanismBox implements IBottomPicker {
DateTime _dateTime = DateTime.now();
FocusNode focusNode = new FocusNode();
@required
final int plan_id;
......@@ -46,30 +48,30 @@ class MechanismBox implements IBottomPicker {
Widget build(BuildContext context) {
MediaQueryData mq = MediaQuery.of(context);
double keyHeight = MediaQuery.of(context).viewInsets.bottom;
return ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
child: Container(
width: mq.size.width,
height: mq.size.height - 140,
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
color: Colors.white,
child: StreamBuilder(
stream: _model.stateLive.stream,
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.getQuestions(plan_id);
});
}
if (data.data == LOADING) {
return loadingItem();
}
return setupHome(mq, keyHeight, context);
},
)),
);
),
width: mq.size.width,
height: mq.size.height - 140,
child: StreamBuilder(
stream: _model.stateLive.stream,
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.getQuestions(plan_id);
});
}
if (data.data == LOADING) {
return loadingItem();
}
return setupHome(mq, keyHeight, context);
},
));
}
@override
......@@ -92,6 +94,7 @@ class MechanismBox implements IBottomPicker {
refreshController.dispose();
_levelModel.dispose();
_model.dispose();
focusNode.dispose();
}
setupHome(mq, keyHeight, BuildContext context) {
......@@ -118,7 +121,10 @@ class MechanismBox implements IBottomPicker {
}
if (data.data == EMPTY) {
return emptyItem(MediaQuery.of(context).size.width,
mq.size.height - 140 - 96 - 50 - keyHeight);
mq.size.height - 140 - 96 - 50 - keyHeight)
.gestureDetector(() {
focusNode.unfocus();
});
}
return mechanismList(mq, keyHeight);
},
......@@ -225,6 +231,7 @@ class MechanismBox implements IBottomPicker {
doctor_ids.add(hospital.hosiptalId);
}
hospital.isCheck = !hospital.isCheck;
focusNode.unfocus();
_levelModel.cardsLive.notifyView(_levelModel.cardsLive.data);
},
child: Container(
......@@ -373,6 +380,7 @@ class MechanismBox implements IBottomPicker {
return TextField(
controller: textController,
keyboardType: TextInputType.text,
focusNode: focusNode,
textInputAction: TextInputAction.send,
onSubmitted: (txt) {
if (doctor_ids.length > 3 || doctor_ids.length < 1) {
......
......@@ -49,7 +49,7 @@ class PlanItem extends StatelessWidget {
child: ClipRRect(
borderRadius: BorderRadius.circular(4),
child: CachedNetworkImage(
imageUrl: "",
imageUrl: plans.projectImage,
fit: BoxFit.cover,
),
),
......
......@@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_common/commonModel/live/BaseModel.dart';
import 'package:flutter_common/commonModel/live/LiveData.dart';
import 'package:flutter_common/commonModel/toast/NativeToast.dart';
import 'package:gm_flutter/ClueModel/page/plan/PlanModelInstance.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanFeedBean.dart';
......@@ -53,11 +54,8 @@ class PlanModel extends BaseModel {
int sortPos = 0;
void init({VoidCallback call, bool needCache = false}) {
if (CacheManager.getInstance().get(MEMORY_CACHE).get(PLAN_MODEL_BUFFER) !=
null &&
needCache) {
var event = PlanBean.fromJson(json.decode(
CacheManager.getInstance().get(MEMORY_CACHE).get(PLAN_MODEL_BUFFER)));
if (PlanModelInstance.getInstance().planBean != null && needCache) {
var event = PlanModelInstance.getInstance().planBean;
projectData = event.data.tags;
sortList = event.data.orders;
picLive.notifyView(event.data.ranks);
......@@ -84,9 +82,7 @@ class PlanModel extends BaseModel {
call();
}
refreshFeed(true, needCache: needCache);
CacheManager.getInstance()
.get(MEMORY_CACHE)
.save(PLAN_MODEL_BUFFER, json.encode(event.toJson()));
PlanModelInstance.getInstance().planBean = event;
} else {
stateLive.notifyView(FAIL);
NativeToast.showNativeToast(event.message);
......@@ -117,24 +113,12 @@ class PlanModel extends BaseModel {
page = 1;
feedDatas.clear();
}
if (needCache
&&CacheManager.getInstance().get(MEMORY_CACHE).get(PLAN_MODEL_LIST_BUFFER)!=null) {
var event = PlanFeedBean.fromJson(json.decode(
CacheManager.getInstance().get(MEMORY_CACHE).get(PLAN_MODEL_LIST_BUFFER)));
if (event.data.plans == null || event.data.plans.isEmpty) {
if (page == 1) {
feedsLive.notifyView(Pair(EMPTY, []));
} else {
feedsLive.notifyView(Pair(ENDLOADING, []));
}
} else {
feedDatas.addAll(event.data.plans);
feedsLive.notifyView(Pair(ENDLOADING, feedDatas));
}
if (needCache) {
WidgetsBinding.instance.addPostFrameCallback((_) {
SimpleEventBus.instance()
.notifyListener("BaseNestedScrollViewRefreshIndicator", "refresh");
});
return;
}
ClueApiImpl.getInstance()
.getPlanFeed(DioUtil.getInstance().getDio(), tag_id, order_by,
......@@ -150,10 +134,6 @@ class PlanModel extends BaseModel {
} else {
feedDatas.addAll(event.data.plans);
feedsLive.notifyView(Pair(ENDLOADING, feedDatas));
event.data.plans=feedDatas;
CacheManager.getInstance()
.get(MEMORY_CACHE)
.save(PLAN_MODEL_LIST_BUFFER, json.encode(event.toJson()));
}
controller?.refreshCompleted();
} else {
......
/*
* @author lsy
* @date 2020/7/10
**/
import 'package:gm_flutter/ClueModel/server/entity/PlanBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanFeedBean.dart';
class PlanModelInstance {
PlanModelInstance._() {}
static PlanModelInstance _instance;
static PlanModelInstance getInstance() {
if (_instance == null) {
_instance = PlanModelInstance._();
}
return _instance;
}
List<String> normalData = ["全部项目", "智能筛选", "筛选"];
PlanBean planBean;
List<Plans> feedDatas = [];
}
......@@ -243,6 +243,9 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
);
},
),
// baseSliverBack((){
// Navigator.pop(context);
// })
],
),
);
......
......@@ -4,12 +4,15 @@
**/
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter_common/commonModel/toast/toast.dart';
import 'package:gm_flutter/MainRouter/service/remote/api/MainApi.serv.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/net/DioUtil.dart';
import '../../../main.mark.dart';
class NetProxyPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => NetProxyState();
......@@ -24,7 +27,11 @@ class NetProxyState extends BaseState<NetProxyPage> {
appBar: baseAppBar(
centerTitle: true,
backClick: () {
Navigator.pop(context);
if(RouterCenterImpl().findMainRouter().isWithNative()){
FlutterBoost.singleton.closeCurrent();
}else{
Navigator.of(context).pop();
}
},
title: "设置代理页面"),
body: Column(
......
......@@ -3,7 +3,8 @@
* @date 2019-12-17
**/
import 'package:flutter/material.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:gm_flutter/main.mark.dart';
abstract class BaseState<T extends StatefulWidget> extends State<T> {
Widget buildItem(BuildContext context);
......@@ -18,7 +19,12 @@ abstract class BaseState<T extends StatefulWidget> extends State<T> {
);
}
void onWillPop(){
Navigator.pop(context);
void onWillPop() {
print("LSY ONWILL POP");
if (RouterCenterImpl().findMainRouter().isWithNative()) {
FlutterBoost.singleton.closeCurrent();
} else {
Navigator.of(context).pop();
}
}
}
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