Commit 478d8063 authored by 杜欣's avatar 杜欣

Merge branch 'test' into featrue/duxin

# Conflicts:
#	lib/ClueModel/page/levelOne/LevelOnePage.dart
parents 4814802c 826c7070
......@@ -10,11 +10,11 @@ import 'package:gm_flutter/ClueModel/ClueRouterImpl.dart';
@Router("ClueRouter", ClueRouterImpl, true)
abstract class ClueRouter implements RouterBaser {
Widget getProjectDetailsPage();
Widget getProjectDetailsPage(Map<String,dynamic> params);
Widget getPlansCompareFeed();
Widget getPlansCompareFeed(Map<String,dynamic> params);
Widget getLevelOnePage();
Widget getLevelOnePage(Map<String,dynamic> params);
Widget getLevelTwoPage();
......
......@@ -5,23 +5,23 @@
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:gm_flutter/ClueModel/ClueRouter.dart';
import 'package:gm_flutter/ClueModel/page/PlanCompareDetail/PlanCompareDetailPage.dart';
import 'package:gm_flutter/ClueModel/page/PlansCompareFeed/PlansCompareFeedPage.dart';
import 'package:gm_flutter/ClueModel/page/ProjectDetails/ProjectDetailsPage.dart';
import 'package:gm_flutter/ClueModel/page/levelOne/LevelOnePage.dart';
import 'package:gm_flutter/ClueModel/page/levelTwo/LevelTwoPage.dart';
import 'package:gm_flutter/ClueModel/page/plan/PlanPage.dart';
import 'package:gm_flutter/ClueModel/page/PlanCompareDetail/PlanCompareDetailPage.dart';
import 'package:gm_flutter/ClueModel/page/top/TopPage.dart';
class ClueRouterImpl implements ClueRouter {
@override
Widget getProjectDetailsPage() {
return ProjectDetailsPage(1);
Widget getProjectDetailsPage(Map<String, dynamic> params) {
return ProjectDetailsPage(params);
}
@override
Widget getLevelOnePage() {
return LevelOnePage();
Widget getLevelOnePage(Map<String, dynamic> params) {
return LevelOnePage(params);
}
@override
......@@ -30,8 +30,8 @@ class ClueRouterImpl implements ClueRouter {
}
@override
Widget getPlansCompareFeed() {
return PlansCompareFeedPage(123,1);
Widget getPlansCompareFeed(Map<String, dynamic> params) {
return PlansCompareFeedPage(params);
}
@override
......
......@@ -20,11 +20,9 @@ class PlansCompareFeedItemView extends StatefulWidget {
class _PlansCompareFeedItemViewState
extends BaseState<PlansCompareFeedItemView> {
ImageIcon _checked = ImageIcon(AssetImage("assets/icon_compare_select.png"));
ImageIcon _unchecked =
ImageIcon(AssetImage("assets/icon_compare_unselect.png"));
ImageIcon _icon = ImageIcon(AssetImage("assets/icon_compare_unselect.png"));
String _checked = "assets/icon_compare_select.png";
String _unchecked = "assets/icon_compare_unselect.png";
String _icon = "assets/icon_compare_unselect.png";
@override
Widget buildItem(BuildContext context) {
......@@ -48,10 +46,19 @@ class _PlansCompareFeedItemViewState
padding: EdgeInsets.only(top: 20, bottom: 20),
child: Row(
children: <Widget>[
IconButton(
icon: _icon,
onPressed: () => onClickCheckBox(_icon),
),
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => onClickCheckBox(_icon),
child: Container(
alignment: Alignment.center,
child: ClipRRect(
child: Image.asset(
_icon,
width: 17,
height: 17,
fit: BoxFit.fill,
)),
)),
Container(
margin: EdgeInsets.only(left: 15, right: 15),
child: ClipRRect(
......@@ -64,29 +71,33 @@ class _PlansCompareFeedItemViewState
),
),
),
Container(
height: 50,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(top: 2, bottom: 5),
margin: EdgeInsets.only(top: 2, bottom: 8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
baseText(widget.plan.name, 14, Color(0xFF282828),
bold: true),
baseText(" 好评率 ", 11, Color(0xFF282828)),
baseText(widget.plan.positiveRate, 14, Color(0xFFFF5963),
bold: true),
Row(children: <Widget>[
baseText("好评率 ", 11, Color(0xFF282828)),
baseText(
widget.plan.positiveRate, 14, Color(0xFFFF5963),
bold: true)
]),
],
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}',
13, Color(0xFFFF5963)),
baseText(" 销量${widget.plan.salesCount}", 11,
Color(0xFF282828))
baseText(
"销量${widget.plan.salesCount}", 11, Color(0xFF282828))
],
)
],
......@@ -105,38 +116,47 @@ class _PlansCompareFeedItemViewState
Container(
margin: EdgeInsets.only(right: 15.0),
alignment: Alignment.centerLeft,
child: IconButton(
icon: _icon,
onPressed: () => onClickCheckBox(_icon),
),
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => onClickCheckBox(_icon),
child: Container(
alignment: Alignment.center,
child: ClipRRect(
child: Image.asset(
_icon,
width: 17,
height: 17,
fit: BoxFit.fill,
)),
)),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(top: 13.0, bottom: 12),
child: baseText(widget.plan.name, 14, Color(0xFF282828),
bold: true),
),
Row(
children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}',
13, Color(0xFFFF5963)),
Container(
width: 160,
alignment: Alignment.centerRight,
child: baseText("指导价:¥${widget.plan.guidePrice}", 11,
Color(0xFF282828))),
],
),
],
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(top: 13.0, bottom: 12),
child: baseText(widget.plan.name, 14, Color(0xFF282828),
bold: true),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}',
13, Color(0xFFFF5963)),
baseText("指导价:¥${widget.plan.guidePrice}", 11,
Color(0xFF282828)),
],
),
],
),
)
],
),
);
}
onClickCheckBox(ImageIcon icon) {
onClickCheckBox(String icon) {
if (icon == _checked) {
_icon = _unchecked;
} else {
......
......@@ -5,11 +5,11 @@
**/
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';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/main.mark.dart';
import 'CallBackCompareItem.dart';
import 'PlansCompareFeedItemView.dart';
......@@ -18,7 +18,10 @@ class PlansCompareFeedPage extends StatefulWidget {
int _planType;
int _planId;
PlansCompareFeedPage(this._planType, this._planId);
PlansCompareFeedPage(Map<String, dynamic> params) {
this._planType = params["planType"];
this._planId = params["planId"];
}
@override
State<StatefulWidget> createState() => _PlansCompareFeedState();
......@@ -75,7 +78,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
}
if (item.error != 0) {
return errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () {});
MediaQuery.of(context).size.height, () {
_model.init(widget._planType, widget._planId);
});
}
return getList(item.data.plans);
},
......@@ -107,9 +112,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
onClickCompare() {
if (_compareColor == Color(0xFFCCCCCC)) return;
setState(() {
Map<String, dynamic> map = {};
map["ids"] = _setCompare;
FlutterBoost.singleton.open("sample", urlParams: map);
RouterCenterImpl()
.findMainRouter()
.jumpPage(context, "pageName", {"ids": _setCompare}, false);
});
}
......
......@@ -15,7 +15,9 @@ import '../../server/entity/ProjectDetailsItem.dart';
class ProjectDetailsPage extends StatefulWidget {
int _planId;
ProjectDetailsPage(this._planId);
ProjectDetailsPage(Map<String, dynamic> params) {
this._planId = params["planId"];
}
@override
State<StatefulWidget> createState() => _ProjectDetailsState();
......@@ -62,24 +64,14 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
}
ProjectDetailsItem item = data.data;
if (item == null || item.data == null || item.data.groups == null) {
return emptyItem(MediaQuery
.of(context)
.size
.width,
MediaQuery
.of(context)
.size
.height);
return emptyItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height);
}
if (item.error != 0) {
return errorItem(MediaQuery
.of(context)
.size
.width,
MediaQuery
.of(context)
.size
.height, () {});
return errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () {
_model.init(widget._planId);
});
}
return ListView.builder(
itemCount: item.data.groups.length,
......
......@@ -89,7 +89,9 @@ class LevelOneListState extends State<LevelOneList>
color: Color(0xffF7F6FA),
);
}
return LevelOneItem(_model.data[index]);
return LevelOneItem(_model.data[index]
,lowPrice: (){
},);
},
childCount: _model.data.length + 1,
),
......
......@@ -10,27 +10,31 @@ 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/services.dart';
import 'package:gm_flutter/ClueModel/page/common/StickyTabBarDelegate.dart';
import 'package:gm_flutter/ClueModel/page/levelOne/LevelOneList.dart';
import 'package:gm_flutter/ClueModel/page/levelOne/LevelOneModel.dart';
import 'package:gm_flutter/commonModel/GMBase.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.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 LevelOnePage extends StatefulWidget {
int planId = 10;
Map<String, dynamic> params;
LevelOnePage(this.params) {
this.planId = params["planId"];
}
@override
State<StatefulWidget> createState() => LevelOneState();
}
class LevelOneState extends BaseState<LevelOnePage>
with TickerProviderStateMixin {
int planId = 10;
LevelOneModel _model = new LevelOneModel();
RefreshController _refreshController = RefreshController();
GlobalKey keyTop = new GlobalKey();
......@@ -46,6 +50,7 @@ class LevelOneState extends BaseState<LevelOnePage>
@override
void initState() {
super.initState();
_model.plan_id = widget.planId;
_model.init(() {
_initTabBar();
});
......@@ -164,7 +169,7 @@ class LevelOneState extends BaseState<LevelOnePage>
list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget(
Key("Tab${i}"),
LevelOneList(
planId, _model.tabsList[i].tabType, kToolbarHeight + d)));
widget.planId, _model.tabsList[i].tabType, kToolbarHeight + d)));
}
final double statusBarHeight = MediaQuery.of(context).padding.top;
final double pinnedHeaderHeight = statusBarHeight + kToolbarHeight;
......
......@@ -46,6 +46,7 @@ class PlanModel extends BaseModel {
ClueApiImpl.getInstance()
.getPlan(DioUtil.getInstance().getDio())
.listen((event) {
print("ERROR12 ${event.error}");
if (event.error == 0) {
projectData = event.data.tags;
sortList = event.data.orders;
......@@ -59,6 +60,7 @@ class PlanModel extends BaseModel {
})
.addToDispose(rxDispose)
.onError((err) {
print("ERROR12WCCCCCC ${err.toString()}");
PrintUtil.printBug(err);
stateLive.notifyView(FAIL);
});
......
......@@ -17,9 +17,12 @@ import 'package:gm_flutter/ClueModel/page/plan/SortView.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanFeedBean.dart';
import 'package:gm_flutter/ClueModel/util/PosUtil.dart';
import 'package:gm_flutter/commonModel/App.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'package:gm_flutter/commonModel/cache/CacheManager.dart';
import 'package:gm_flutter/commonModel/net/DioUtil.dart';
import 'package:gm_flutter/commonModel/popMenu/BaseMenuListener.dart';
import 'package:gm_flutter/commonModel/popMenu/BasePopMenu.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
......@@ -50,6 +53,9 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
@override
void initState() {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gtid=3123e178b91a11eaa2d87e40d376ac134112; sessionid=pq9wf8equ4h26ia3yspzmquqn2rjs6mx; _gm_token=4091a81593419225");
DioUtil.getInstance().setProxy("172.30.8.245");
super.initState();
_model.init();
planBarView =
......@@ -249,13 +255,16 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
child: loadingItem(),
);
} else if (data.data == FAIL) {
return errorItem(
MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height,
() {
_model.stateLive.notifyView(LOADING);
_model.init();
},
return Container(
color: Colors.white,
child: errorItem(
MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height,
() {
_model.stateLive.notifyView(LOADING);
_model.init();
},
),
);
} else {
return Container(
......
......@@ -10,14 +10,22 @@ class PlanBean {
UserType userType;
Data data;
PlanBean({this.error, this.message, this.extra, this.errorExtra, this.userType, this.data});
PlanBean(
{this.error,
this.message,
this.extra,
this.errorExtra,
this.userType,
this.data});
PlanBean.fromJson(Map<String, dynamic> json) {
error = json['error'];
message = json['message'];
extra = json['extra'];
errorExtra = json['error_extra'];
userType = json['user_type'] != null ? new UserType.fromJson(json['user_type']) : null;
userType = json['user_type'] != null
? new UserType.fromJson(json['user_type'])
: null;
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
}
......@@ -38,16 +46,14 @@ class PlanBean {
}
class UserType {
UserType();
UserType.fromJson(Map<String, dynamic> json) {
}
UserType.fromJson(Map<String, dynamic> json) {}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
return data;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
return data;
}
}
class Data {
......@@ -61,19 +67,27 @@ class Data {
Data.fromJson(Map<String, dynamic> json) {
if (json['ranks'] != null) {
ranks = new List<Ranks>();
json['ranks'].forEach((v) { ranks.add(new Ranks.fromJson(v)); });
json['ranks'].forEach((v) {
ranks.add(new Ranks.fromJson(v));
});
}
if (json['areas'] != null) {
areas = new List<Areas>();
json['areas'].forEach((v) { areas.add(new Areas.fromJson(v)); });
json['areas'].forEach((v) {
areas.add(new Areas.fromJson(v));
});
}
if (json['tags'] != null) {
tags = new List<Tags>();
json['tags'].forEach((v) { tags.add(new Tags.fromJson(v)); });
json['tags'].forEach((v) {
tags.add(new Tags.fromJson(v));
});
}
if (json['orders'] != null) {
orders = new List<Orders>();
json['orders'].forEach((v) { orders.add(new Orders.fromJson(v)); });
json['orders'].forEach((v) {
orders.add(new Orders.fromJson(v));
});
}
}
......@@ -96,6 +110,7 @@ class Data {
}
class Ranks {
int id;
String name;
String gmUrl;
String icon;
......@@ -103,6 +118,7 @@ class Ranks {
Ranks({this.name, this.gmUrl, this.icon});
Ranks.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
gmUrl = json['gm_url'];
icon = json['icon'];
......@@ -111,6 +127,7 @@ class Ranks {
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['id'] = this.id;
data['gm_url'] = this.gmUrl;
data['icon'] = this.icon;
return data;
......@@ -129,7 +146,9 @@ class Areas {
name = json['name'];
if (json['groups'] != null) {
groups = new List<Groups>();
json['groups'].forEach((v) { groups.add(new Groups.fromJson(v)); });
json['groups'].forEach((v) {
groups.add(new Groups.fromJson(v));
});
}
}
......@@ -157,7 +176,9 @@ class Groups {
initial = json['initial'];
if (json['cities'] != null) {
cities = new List<Cities>();
json['cities'].forEach((v) { cities.add(new Cities.fromJson(v)); });
json['cities'].forEach((v) {
cities.add(new Cities.fromJson(v));
});
}
title = json['title'];
}
......@@ -207,7 +228,9 @@ class Tags {
id = json['id'].toString();
if (json['sub_tags'] != null) {
subTags = new List<SubTags>();
json['sub_tags'].forEach((v) { subTags.add(new SubTags.fromJson(v)); });
json['sub_tags'].forEach((v) {
subTags.add(new SubTags.fromJson(v));
});
}
name = json['name'];
}
......@@ -260,4 +283,3 @@ class Orders {
return data;
}
}
......@@ -14,4 +14,6 @@ abstract class MainRouter extends RouterBaser {
Widget getTestPage();
void buriedEvent(String name, Map<String, dynamic> map);
void jumpPage(BuildContext context,String pageName, Map<String, dynamic> params,bool nativePage);
}
......@@ -3,6 +3,7 @@
* @date 2019-12-31
**/
import 'package:flutter/src/widgets/framework.dart';
import 'package:gm_flutter/MainRouter/manager/JumpManager.dart';
import 'package:gm_flutter/MainRouter/manager/MainManager.dart';
import 'package:gm_flutter/MainRouter/page/test/TestPage.dart';
......@@ -23,4 +24,10 @@ class MainRouterImpl implements MainRouter {
void buriedEvent(String name, Map<String, dynamic> map) {
MainManager.getInstance().buriedEvent(name, map);
}
@override
void jumpPage(
BuildContext context, String pageName, Map<String, dynamic> params,bool nativePage) {
JumpManager.instance().jumpToPage(context, pageName, params,nativePage);
}
}
/*
* @author lsy
* @date 2020/7/6
**/
import 'package:flutter/cupertino.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter_common/commonModel/util/JumpUtil.dart';
import 'package:gm_flutter/MainRouter/manager/MainManager.dart';
import 'package:gm_flutter/main.mark.dart';
class JumpManager {
static JumpManager _instance;
JumpManager._() {}
static JumpManager instance() {
if (_instance == null) {
_instance = JumpManager._();
}
return _instance;
}
void jumpToPage(BuildContext context, String pageName,
Map<String, dynamic> params, bool nativePage) {
String pageNameWrap =
nativePage ? "gm://${pageName}" : "flutter://${pageName}";
if (!MainManager.getInstance().isInit) {
JumpUtil.jumpToPageRight(context, initMap(params)[pageNameWrap]);
} else {
FlutterBoost.singleton.open(pageName, urlParams: params);
}
}
Map<String, dynamic> initMap(Map<String, dynamic> params) {
return {
"flutter://clueLevelOne":
RouterCenterImpl().findClueRouter().getLevelOnePage(params),
"flutter://clueProjectDetails":
RouterCenterImpl().findClueRouter().getProjectDetailsPage(params),
"flutter://cluePlansCompareFeed":
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
};
}
}
......@@ -4,7 +4,12 @@
**/
import 'package:flutter/services.dart';
import 'package:flutter_boost/flutter_boost.dart';
import 'package:gm_flutter/commonModel/GMBase.dart';
import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/commonModel/cache/CacheManager.dart';
import 'package:gm_flutter/commonModel/util/DartUtil.dart';
import '../../commonModel/App.dart';
class MainManager {
MethodChannel flutterChannel;
......@@ -31,10 +36,46 @@ class MainManager {
flutterChannel = MethodChannel('gm_method_channel');
flutterEvent = EventChannel('gm_method_event');
flutterEvent.receiveBroadcastStream().listen((data) {
print("LSY FLUTTER EVENT ${data}");
if (data is Map<String, String>) {
var map = Map<String, String>.from(data);
innerSetData(map, APP_NAME);
innerSetData(map, VERSION);
innerSetData(map, PLATFORM);
innerSetData(map, DEVICE_ID);
innerSetData(map, OS_VERSION);
innerSetData(map, MODEL);
innerSetData(map, SCREEN);
innerSetData(map, LAT);
innerSetData(map, LNG);
innerSetData(map, CHANNEL);
innerSetData(map, MANUFACTURER);
innerSetData(map, UUID);
innerSetData(map, ANDROID_DEVICE_ID);
innerSetData(map, CURRENT_CITY_ID);
innerSetData(map, USER_AGENT);
innerSetData(map, RELEASE);
innerSetData(map, IDFA);
innerSetData(map, IDFV);
innerSetData(map, IS_WIFI);
innerSetData(map, HARDWARE_MODEL);
innerSetData(map, USER_ID);
innerSetData(map, COOKIE);
innerSetData(map, BASE_URL);
DioUtil.setDefOptions(
baseUrl: map[BASE_URL] + "/",
cookie: map[COOKIE],
agent: map[USER_AGENT]);
DioUtil.getInstance().changeOpt();
}
});
}
void innerSetData(Map<String, String> map, String str) {
if (!map[str].empty()) {
CacheManager.getInstance().get(MEMORY_CACHE).save(str, map[str]);
}
}
void buriedEvent(String name, Map<String, dynamic> map) {
if (!isInit) {
return;
......
......@@ -26,8 +26,11 @@ class TestState extends BaseState<TestPage> {
JumpUtil.jumpToPageRight(context, NetProxyPage());
}));
list.add(listItem("一级列表页", () {
JumpUtil.jumpToPageRight(
context, RouterCenterImpl().findClueRouter().getLevelOnePage());
// JumpUtil.jumpToPageRight(
// context, RouterCenterImpl().findClueRouter().getLevelOnePage({"planId":137}));
RouterCenterImpl()
.findMainRouter()
.jumpPage(context, "clueLevelOne", {"planId": 137}, false);
}));
list.add(listItem("二级列表页", () {
JumpUtil.jumpToPageRight(
......@@ -43,11 +46,11 @@ class TestState extends BaseState<TestPage> {
}));
list.add(listItem("项目说明", () {
JumpUtil.jumpToPageRight(
context, RouterCenterImpl().findClueRouter().getProjectDetailsPage());
context, RouterCenterImpl().findClueRouter().getProjectDetailsPage({"planId":1}));
}));
list.add(listItem("方案对比", () {
JumpUtil.jumpToPageRight(
context, RouterCenterImpl().findClueRouter().getPlansCompareFeed());
context, RouterCenterImpl().findClueRouter().getPlansCompareFeed({"planId":1,"planType":1}));
}));
list.add(listItem("榜单", () {
JumpUtil.jumpToPageRight(
......
/*
* @author lsy
* @date 2020/7/6
**/
const String APP_NAME="app_name";
const String VERSION="version";
const String PLATFORM="platform";
const String DEVICE_ID="device_id";
const String OS_VERSION="os_version";
const String MODEL="model";
const String SCREEN="screen";
const String LAT="lat";
const String LNG="lng";
const String CHANNEL="channel";
const String MANUFACTURER="manufacturer";
const String UUID="uuid";
const String ANDROID_DEVICE_ID="android_device_id";
const String CURRENT_CITY_ID="current_city_id";
const String RELEASE="release";
const String IDFA="idfa";
const String IDFV="idfv";
const String IS_WIFI="is_WiFi";
const String HARDWARE_MODEL="hardware_model";
//head
const String USER_AGENT="User-Agent";
const String COOKIE="cookie";
//user
const String USER_ID="user_id";
const String BASE_URL="base_url";
......@@ -148,7 +148,7 @@ Widget errorItem(double width, double height, VoidCallback retry,
return Container(
width: width,
height: height,
padding: EdgeInsets.only(top: paddingTop),
padding: EdgeInsets.only(top: paddingTop??0),
alignment: Alignment.topCenter,
child: Container(
width: 180,
......
......@@ -19,7 +19,9 @@ const String APP_HOST_RELEASE = "https://x6cgr5y5-gengmei.mock.coding.io";
*/
//const String APP_HOST_DEBUG = "http://backend.paas-merchant.envs";
//const String APP_HOST_DEBUG = "http://doctor.paas-merchant.env";
const String APP_HOST_DEBUG = "https://x6cgr5y5-gengmei.mock.coding.io";
//const String APP_HOST_DEBUG = "https://x6cgr5y5-gengmei.mock.coding.io";
const String APP_HOST_DEBUG = "http://backend.paas-merchant.env";
//const String APP_HOST_DEBUG = "http://janus.paas-merchant.env";
/**
* 开发环境
......
......@@ -7,6 +7,7 @@ import 'dart:io';
import 'package:dio/dio.dart';
import 'package:gm_flutter/commonModel/cache/CacheManager.dart';
import '../App.dart';
import 'DioUtil.dart';
class DioInterceptorManager {
......@@ -23,13 +24,104 @@ class DioInterceptorManager {
InterceptorsWrapper getIntercept() {
return new InterceptorsWrapper(onRequest: (opt) {
if (CacheManager.getInstance().get(SHARE_CACHE).get(NET_COOKIE) != null) {
if (opt.headers == null) {
opt.headers = Map();
}
if (opt.headers == null) {
opt.headers = Map();
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE) != null) {
opt.headers[HttpHeaders.cookieHeader] =
CacheManager.getInstance().get(SHARE_CACHE).get(NET_COOKIE);
CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE);
}
if (opt.queryParameters == null) {
opt.queryParameters = Map<String, dynamic>();
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(APP_NAME) != null) {
opt.queryParameters[APP_NAME] =
CacheManager.getInstance().get(MEMORY_CACHE).get(APP_NAME);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(VERSION) != null) {
opt.queryParameters[VERSION] =
CacheManager.getInstance().get(MEMORY_CACHE).get(VERSION);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(PLATFORM) != null) {
opt.queryParameters[PLATFORM] =
CacheManager.getInstance().get(MEMORY_CACHE).get(PLATFORM);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(DEVICE_ID) != null) {
opt.queryParameters[DEVICE_ID] =
CacheManager.getInstance().get(MEMORY_CACHE).get(DEVICE_ID);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(OS_VERSION) !=
null) {
opt.queryParameters[OS_VERSION] =
CacheManager.getInstance().get(MEMORY_CACHE).get(OS_VERSION);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(MODEL) != null) {
opt.queryParameters[MODEL] =
CacheManager.getInstance().get(MEMORY_CACHE).get(MODEL);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(SCREEN) != null) {
opt.queryParameters[SCREEN] =
CacheManager.getInstance().get(MEMORY_CACHE).get(SCREEN);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(LAT) != null) {
opt.queryParameters[LAT] =
CacheManager.getInstance().get(MEMORY_CACHE).get(LAT);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(LNG) != null) {
opt.queryParameters[LNG] =
CacheManager.getInstance().get(MEMORY_CACHE).get(LNG);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(CHANNEL) != null) {
opt.queryParameters[CHANNEL] =
CacheManager.getInstance().get(MEMORY_CACHE).get(CHANNEL);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(MANUFACTURER) !=
null) {
opt.queryParameters[MANUFACTURER] =
CacheManager.getInstance().get(MEMORY_CACHE).get(MANUFACTURER);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(UUID) != null) {
opt.queryParameters[UUID] =
CacheManager.getInstance().get(MEMORY_CACHE).get(UUID);
}
if (Platform.isAndroid) {
if (CacheManager.getInstance()
.get(MEMORY_CACHE)
.get(ANDROID_DEVICE_ID) !=
null) {
opt.queryParameters[ANDROID_DEVICE_ID] = CacheManager.getInstance()
.get(MEMORY_CACHE)
.get(ANDROID_DEVICE_ID);
}
} else {
if (CacheManager.getInstance().get(MEMORY_CACHE).get(RELEASE) != null) {
opt.queryParameters[RELEASE] =
CacheManager.getInstance().get(MEMORY_CACHE).get(RELEASE);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(IDFA) != null) {
opt.queryParameters[IDFA] =
CacheManager.getInstance().get(MEMORY_CACHE).get(IDFA);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(IDFV) != null) {
opt.queryParameters[IDFV] =
CacheManager.getInstance().get(MEMORY_CACHE).get(IDFV);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(IS_WIFI) != null) {
opt.queryParameters[IS_WIFI] =
CacheManager.getInstance().get(MEMORY_CACHE).get(IS_WIFI);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(HARDWARE_MODEL) !=
null) {
opt.queryParameters[HARDWARE_MODEL] =
CacheManager.getInstance().get(MEMORY_CACHE).get(HARDWARE_MODEL);
}
if (CacheManager.getInstance().get(MEMORY_CACHE).get(CURRENT_CITY_ID) !=
null) {
opt.queryParameters[CURRENT_CITY_ID] =
CacheManager.getInstance().get(MEMORY_CACHE).get(CURRENT_CITY_ID);
}
}
print("请求之前 onRequest${opt.headers}");
}, onResponse: (response) {
print("响应之前 onResponse${response}");
......
......@@ -11,9 +11,9 @@ import 'DioInterceptor.dart';
const NET_COOKIE = "NET_COOKIE";
class DioUtil {
static BaseOptions _options = BaseOptions();
static final DioUtil _instance = DioUtil._init();
static Dio _dio;
static BaseOptions _options = getDefOptions();
static Map<String, dynamic> addHeadMap;
......@@ -31,9 +31,15 @@ class DioUtil {
static var interceptor = InterceptorsWrapper();
DioUtil._init() {
setDefOptions();
_dio = new Dio(_options);
_dio.interceptors.add(DioInterceptorManager.getInstance().getIntercept());
// _dio.interceptors.add(DioCookieManager.getInstance().getCookieManager());
}
void changeOpt() {
_dio = new Dio(_options);
_dio.interceptors.add(DioInterceptorManager.getInstance().getIntercept());
_dio.interceptors.add(DioCookieManager.getInstance().getCookieManager());
}
void clearCookie() {
......@@ -56,16 +62,19 @@ class DioUtil {
return _dio;
}
static BaseOptions getDefOptions() {
BaseOptions options = BaseOptions();
options.connectTimeout = 10 * 1000;
options.receiveTimeout = 20 * 1000;
options.responseType = ResponseType.plain;
static void setDefOptions({String baseUrl, String cookie, String agent}) {
_options.connectTimeout = 10 * 1000;
_options.receiveTimeout = 20 * 1000;
_options.responseType = ResponseType.plain;
Map<String, dynamic> headers = Map<String, dynamic>();
headers['Accept'] = 'application/json';
headers['version'] = '1.0.0';
options.headers = headers;
options.baseUrl = Api.getInstance().getBaseUrl() + "/";
return options;
if (agent != null) {
headers['User-Agent'] = agent;
}
if (cookie != null) {
headers[HttpHeaders.cookieHeader] = cookie;
}
_options.headers = headers;
_options.baseUrl = baseUrl ?? Api.getInstance().getBaseUrl() + "/";
}
}
......@@ -55,4 +55,8 @@ extension StringExt on String {
'^((13[0-9])|(15[^4])|(166)|(17[0-8])|(18[0-9])|(19[8-9])|(147,145))\\d{8}\$')
.hasMatch(this);
}
bool empty() {
return this == null || this.isEmpty;
}
}
......@@ -58,8 +58,8 @@ class MyApp extends State<MyAppWidget> {
void initState() {
super.initState();
FlutterBoost.singleton.registerPageBuilders({
'demoPage': (pageName, params, _) {
return RouterCenterImpl().findClueRouter().getLevelOnePage();
'clueLevelOne': (pageName, params, _) {
return RouterCenterImpl().findClueRouter().getLevelOnePage(params);
},
'demoPage1': (pageName, params, _) {
return DemoPage1();
......
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