Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
gm_flutter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
林生雨
gm_flutter
Commits
832d5c91
Commit
832d5c91
authored
Jul 09, 2020
by
林生雨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit
parent
02a1c894
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
48 additions
and
1900 deletions
+48
-1900
LevelOnePage.dart
lib/ClueModel/page/levelOne/LevelOnePage.dart
+3
-0
FilterView.dart
lib/ClueModel/page/plan/FilterView.dart
+10
-10
PlanModel.dart
lib/ClueModel/page/plan/PlanModel.dart
+2
-1
PlanPage.dart
lib/ClueModel/page/plan/PlanPage.dart
+6
-4
PlanProgressBar.dart
lib/ClueModel/page/plan/PlanProgressBar.dart
+6
-8
PlanTest.dart
lib/ClueModel/page/plan/PlanTest.dart
+0
-1865
MainRouterImpl.dart
lib/MainRouter/MainRouterImpl.dart
+0
-1
MainManager.dart
lib/MainRouter/manager/MainManager.dart
+7
-10
baseRefreshIndicator.dart
lib/commonModel/view/baseRefreshIndicator.dart
+14
-1
No files found.
lib/ClueModel/page/levelOne/LevelOnePage.dart
View file @
832d5c91
...
@@ -11,6 +11,7 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'
...
@@ -11,6 +11,7 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_common/commonModel/picker/base/BaseBottomPicker.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'
;
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/LevelOneList.dart'
;
import
'package:gm_flutter/ClueModel/page/levelOne/LevelOneModel.dart'
;
import
'package:gm_flutter/ClueModel/page/levelOne/LevelOneModel.dart'
;
...
@@ -535,6 +536,8 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -535,6 +536,8 @@ class LevelOneState extends BaseState<LevelOnePage>
RouterCenterImpl
()
RouterCenterImpl
()
.
findMainRouter
()
.
findMainRouter
()
.
buriedEvent
(
"popup_view"
,
map
);
.
buriedEvent
(
"popup_view"
,
map
);
DiscussLowPricePopView
.
showPopView
(
context
,
widget
.
PAGE_NAME
,
"
${widget.planId}
"
,
""
,
""
);
},
},
child:
Container
(
child:
Container
(
margin:
EdgeInsets
.
only
(
left:
15
),
margin:
EdgeInsets
.
only
(
left:
15
),
...
...
lib/ClueModel/page/plan/FilterView.dart
View file @
832d5c91
...
@@ -6,6 +6,7 @@ import 'package:flutter/cupertino.dart';
...
@@ -6,6 +6,7 @@ import 'package:flutter/cupertino.dart';
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:gm_flutter/ClueModel/page/plan/PlanProgressBar.dart'
;
import
'package:gm_flutter/ClueModel/page/plan/PlanProgressBar.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
class
FilterView
extends
StatelessWidget
{
class
FilterView
extends
StatelessWidget
{
...
@@ -15,17 +16,9 @@ class FilterView extends StatelessWidget {
...
@@ -15,17 +16,9 @@ class FilterView extends StatelessWidget {
int
min
=
0
;
int
min
=
0
;
int
max
=
0
;
int
max
=
0
;
PlanProgressBar
planProgressBar
;
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
planProgressBar
=
PlanProgressBar
(
0
,
5
,
0
,
10000
,
padding:
15
,
);
return
Container
(
return
Container
(
color:
Colors
.
white
,
color:
Colors
.
white
,
height:
186
,
height:
186
,
...
@@ -36,7 +29,13 @@ class FilterView extends StatelessWidget {
...
@@ -36,7 +29,13 @@ class FilterView extends StatelessWidget {
left:
0
,
left:
0
,
child:
Container
(
child:
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
,
width:
MediaQuery
.
of
(
context
).
size
.
width
,
child:
planProgressBar
,
child:
PlanProgressBar
(
0
,
5
,
0
,
10000
,
padding:
15
,
),
),
),
),
),
Positioned
(
Positioned
(
...
@@ -66,7 +65,8 @@ class FilterView extends StatelessWidget {
...
@@ -66,7 +65,8 @@ class FilterView extends StatelessWidget {
child:
baseText
(
"重置"
,
16
,
Color
(
0xff3FB5AF
)),
child:
baseText
(
"重置"
,
16
,
Color
(
0xff3FB5AF
)),
alignment:
Alignment
.
center
,
alignment:
Alignment
.
center
,
).
gestureDetector
(()
{
).
gestureDetector
(()
{
planProgressBar
.
changeNotifier
.
notifyListeners
();
SimpleEventBus
.
instance
()
.
notifyListener
(
"PlanProgressBarState"
,
""
);
}),
}),
),
),
Expanded
(
Expanded
(
...
...
lib/ClueModel/page/plan/PlanModel.dart
View file @
832d5c91
...
@@ -8,13 +8,13 @@ import 'package:flutter/foundation.dart';
...
@@ -8,13 +8,13 @@ import 'package:flutter/foundation.dart';
import
'package:flutter_common/commonModel/live/BaseModel.dart'
;
import
'package:flutter_common/commonModel/live/BaseModel.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:flutter_common/commonModel/toast/NativeToast.dart'
;
import
'package:flutter_common/commonModel/toast/NativeToast.dart'
;
import
'package:gm_flutter/ClueModel/page/plan/PlanTest.dart'
;
import
'package:gm_flutter/ClueModel/server/api/ClueApi.serv.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/PlanBean.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/PlanFeedBean.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/PlanFeedBean.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
import
'package:gm_flutter/commonModel/rx/RxDispose.dart'
;
import
'package:gm_flutter/commonModel/rx/RxDispose.dart'
;
import
'package:gm_flutter/commonModel/util/PrintUtil.dart'
;
import
'package:gm_flutter/commonModel/util/PrintUtil.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
...
@@ -110,6 +110,7 @@ class PlanModel extends BaseModel {
...
@@ -110,6 +110,7 @@ class PlanModel extends BaseModel {
}
}
void
refreshFeed
(
bool
clear
,
{
RefreshController
controller
})
{
void
refreshFeed
(
bool
clear
,
{
RefreshController
controller
})
{
if
(
clear
)
{
if
(
clear
)
{
page
=
1
;
page
=
1
;
feedDatas
.
clear
();
feedDatas
.
clear
();
...
...
lib/ClueModel/page/plan/PlanPage.dart
View file @
832d5c91
...
@@ -25,6 +25,7 @@ import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
...
@@ -25,6 +25,7 @@ import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
import
'package:gm_flutter/commonModel/net/DioUtil.dart'
;
import
'package:gm_flutter/commonModel/net/DioUtil.dart'
;
import
'package:gm_flutter/commonModel/popMenu/BaseMenuListener.dart'
;
import
'package:gm_flutter/commonModel/popMenu/BaseMenuListener.dart'
;
import
'package:gm_flutter/commonModel/popMenu/BasePopMenu.dart'
;
import
'package:gm_flutter/commonModel/popMenu/BasePopMenu.dart'
;
...
@@ -58,18 +59,18 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
...
@@ -58,18 +59,18 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
PlanBarView
planBarView
;
PlanBarView
planBarView
;
double
stateBarHeight
;
double
stateBarHeight
;
double
topHeight
;
double
topHeight
;
Function
(
String
str
)
func
;
@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");
super
.
initState
();
super
.
initState
();
if
(
CacheManager
.
getInstance
().
get
(
MEMORY_CACHE
).
get
(
COOKIE
)
==
null
)
{
func
=
(
str
)
{
VoidCallback
callback
=
()
{
_model
.
init
();
_model
.
init
();
};
};
print
(
"LST FIRST CALLBACK is null ?
${callback == null}
"
);
if
(
CacheManager
.
getInstance
().
get
(
MEMORY_CACHE
).
get
(
COOKIE
)
==
null
)
{
RouterCenterImpl
().
findMainRouter
().
getInitParams
(
callback
);
SimpleEventBus
.
instance
().
resignEvent
(
"PlanPage!initState"
,
func
);
}
else
{
}
else
{
_model
.
init
();
_model
.
init
();
}
}
...
@@ -79,6 +80,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
...
@@ -79,6 +80,7 @@ class PlanState extends BaseState<PlanPage> with TickerProviderStateMixin {
@override
@override
void
dispose
()
{
void
dispose
()
{
SimpleEventBus
.
instance
().
unResignEvent
(
"PlanPage!initState"
,
func
);
hideAllMenuListener
.
dispose
();
hideAllMenuListener
.
dispose
();
projectMenuListener
.
dispose
();
projectMenuListener
.
dispose
();
sortMenuListener
.
dispose
();
sortMenuListener
.
dispose
();
...
...
lib/ClueModel/page/plan/PlanProgressBar.dart
View file @
832d5c91
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
class
PlanProgressBar
extends
StatefulWidget
{
class
PlanProgressBar
extends
StatefulWidget
{
int
low
;
int
low
;
...
@@ -12,7 +13,6 @@ class PlanProgressBar extends StatefulWidget {
...
@@ -12,7 +13,6 @@ class PlanProgressBar extends StatefulWidget {
int
maxlow
;
int
maxlow
;
int
maxHigh
;
int
maxHigh
;
int
padding
;
int
padding
;
ChangeNotifier
changeNotifier
;
PlanProgressBar
(
this
.
low
,
this
.
high
,
this
.
maxlow
,
this
.
maxHigh
,
PlanProgressBar
(
this
.
low
,
this
.
high
,
this
.
maxlow
,
this
.
maxHigh
,
{
this
.
padding
});
{
this
.
padding
});
...
@@ -35,20 +35,18 @@ class PlanProgressBarState extends State<PlanProgressBar> {
...
@@ -35,20 +35,18 @@ class PlanProgressBarState extends State<PlanProgressBar> {
double
textLeft
=
-
1
;
double
textLeft
=
-
1
;
bool
isLeftMove
=
true
;
bool
isLeftMove
=
true
;
Function
(
String
str
)
func
;
@override
@override
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
distance
=
widget
.
maxHigh
-
widget
.
maxlow
-
0.0
;
distance
=
widget
.
maxHigh
-
widget
.
maxlow
-
0.0
;
widget
.
changeNotifier
=
ChangeNotifier
();
init
();
init
();
if
(
widget
.
changeNotifier
!=
null
&&
!
widget
.
changeNotifier
.
hasListeners
)
{
func
=
(
str
)
{
widget
.
changeNotifier
.
addListener
(()
{
print
(
"HHH"
);
init
();
init
();
setState
(()
{});
setState
(()
{});
})
;
}
;
}
SimpleEventBus
.
instance
().
resignEvent
(
"PlanProgressBarState"
,
func
);
}
}
void
init
()
{
void
init
()
{
...
@@ -61,7 +59,7 @@ class PlanProgressBarState extends State<PlanProgressBar> {
...
@@ -61,7 +59,7 @@ class PlanProgressBarState extends State<PlanProgressBar> {
@override
@override
void
dispose
()
{
void
dispose
()
{
widget
.
changeNotifier
.
dispose
(
);
SimpleEventBus
.
instance
().
unResignEvent
(
"PlanProgressBarState"
,
func
);
super
.
dispose
();
super
.
dispose
();
}
}
...
...
lib/ClueModel/page/plan/PlanTest.dart
deleted
100644 → 0
View file @
02a1c894
/*
* @author lsy
* @date 2020/7/1
**/
const
PLAN_TEST_JSON
=
"""
{
"
error
": 0,
"
message
": "",
"
extra
": null,
"
error_extra
": null,
"
user_type
": {},
"
data
": {
"
ranks
": [
{
"
name
": "
方案好评榜
",
"
gm_url
": "
xxxxx
",
"
icon
": "
https:
//heras.igengmei.com/2020/02/16/9327baec41"
},
{
"name"
:
"热门榜"
,
"gm_url"
:
"xxxxx"
,
"icon"
:
"https://heras.igengmei.com/2020/02/16/9327baec41"
}
],
"areas"
:
[
{
"is_located"
:
true
,
"name"
:
"中国"
,
"groups"
:
[
{
"is_hot"
:
true
,
"initial"
:
"热"
,
"cities"
:
[
{
"city_name"
:
"beijing"
,
"id"
:
328
,
"name"
:
"北京"
},
{
"city_name"
:
"shanghai"
,
"id"
:
592
,
"name"
:
"上海"
},
{
"city_name"
:
"guangzhou"
,
"id"
:
409
,
"name"
:
"广州"
},
{
"city_name"
:
"shenzhen"
,
"id"
:
604
,
"name"
:
"深圳"
},
{
"city_name"
:
"chengdu"
,
"id"
:
352
,
"name"
:
"成都"
},
{
"city_name"
:
"chongqing"
,
"id"
:
359
,
"name"
:
"重庆"
},
{
"city_name"
:
"wuhan"
,
"id"
:
662
,
"name"
:
"武汉"
},
{
"city_name"
:
"changsha"
,
"id"
:
343
,
"name"
:
"长沙"
},
{
"city_name"
:
"xian"
,
"id"
:
675
,
"name"
:
"西安"
},
{
"city_name"
:
"zhengzhou"
,
"id"
:
744
,
"name"
:
"郑州"
},
{
"city_name"
:
"hangzhou"
,
"id"
:
425
,
"name"
:
"杭州"
},
{
"city_name"
:
"nanjing"
,
"id"
:
542
,
"name"
:
"南京"
}
],
"title"
:
"热门城市"
},
{
"initial"
:
"*"
,
"cities"
:
[
{
"city_name"
:
"worldwide"
,
"id"
:
"worldwide"
,
"name"
:
"全部城市"
}
],
"title"
:
"*"
},
{
"is_hot"
:
false
,
"initial"
:
"A"
,
"cities"
:
[
{
"city_name"
:
"ankang"
,
"id"
:
304
,
"name"
:
"安康"
},
{
"city_name"
:
"anqing"
,
"id"
:
306
,
"name"
:
"安庆"
}
],
"title"
:
"A"
},
{
"is_hot"
:
false
,
"initial"
:
"B"
,
"cities"
:
[
{
"city_name"
:
"baoding"
,
"id"
:
317
,
"name"
:
"保定"
},
{
"city_name"
:
"baoji"
,
"id"
:
318
,
"name"
:
"宝鸡"
},
{
"city_name"
:
"baotou"
,
"id"
:
321
,
"name"
:
"包头"
},
{
"city_name"
:
"beijing"
,
"id"
:
328
,
"name"
:
"北京"
},
{
"city_name"
:
"bengbu"
,
"id"
:
329
,
"name"
:
"蚌埠"
},
{
"city_name"
:
"bijie"
,
"id"
:
331
,
"name"
:
"毕节"
},
{
"city_name"
:
"bozhou"
,
"id"
:
335
,
"name"
:
"亳州"
}
],
"title"
:
"B"
},
{
"is_hot"
:
false
,
"initial"
:
"C"
,
"cities"
:
[
{
"city_name"
:
"cangzhou"
,
"id"
:
336
,
"name"
:
"沧州"
},
{
"city_name"
:
"changchun"
,
"id"
:
337
,
"name"
:
"长春"
},
{
"city_name"
:
"changsha"
,
"id"
:
343
,
"name"
:
"长沙"
},
{
"city_name"
:
"changzhou"
,
"id"
:
347
,
"name"
:
"常州"
},
{
"city_name"
:
"chengde"
,
"id"
:
351
,
"name"
:
"承德"
},
{
"city_name"
:
"chengdu"
,
"id"
:
352
,
"name"
:
"成都"
},
{
"city_name"
:
"chenzhou"
,
"id"
:
355
,
"name"
:
"郴州"
},
{
"city_name"
:
"chongqing"
,
"id"
:
359
,
"name"
:
"重庆"
},
{
"city_name"
:
"chuxiong"
,
"id"
:
361
,
"name"
:
"楚雄"
}
],
"title"
:
"C"
},
{
"is_hot"
:
false
,
"initial"
:
"D"
,
"cities"
:
[
{
"city_name"
:
"dali"
,
"id"
:
364
,
"name"
:
"大理"
},
{
"city_name"
:
"dalian"
,
"id"
:
365
,
"name"
:
"大连"
},
{
"city_name"
:
"dandong"
,
"id"
:
366
,
"name"
:
"丹东"
},
{
"city_name"
:
"daqing"
,
"id"
:
369
,
"name"
:
"大庆"
},
{
"city_name"
:
"datong"
,
"id"
:
370
,
"name"
:
"大同"
},
{
"city_name"
:
"dazhou"
,
"id"
:
373
,
"name"
:
"达州"
},
{
"city_name"
:
"deyang"
,
"id"
:
376
,
"name"
:
"德阳"
},
{
"city_name"
:
"dongguan"
,
"id"
:
382
,
"name"
:
"东莞"
},
{
"city_name"
:
"dongyang"
,
"id"
:
384
,
"name"
:
"东阳"
},
{
"city_name"
:
"dongying"
,
"id"
:
385
,
"name"
:
"东营"
}
],
"title"
:
"D"
},
{
"is_hot"
:
false
,
"initial"
:
"E"
,
"cities"
:
[
{
"city_name"
:
"enshi"
,
"id"
:
387
,
"name"
:
"恩施"
}
],
"title"
:
"E"
},
{
"is_hot"
:
false
,
"initial"
:
"F"
,
"cities"
:
[
{
"city_name"
:
"foshan"
,
"id"
:
395
,
"name"
:
"佛山"
},
{
"city_name"
:
"fuyang"
,
"id"
:
399
,
"name"
:
"阜阳"
},
{
"city_name"
:
"fuzhou"
,
"id"
:
400
,
"name"
:
"福州"
}
],
"title"
:
"F"
},
{
"is_hot"
:
false
,
"initial"
:
"G"
,
"cities"
:
[
{
"city_name"
:
"ganzhou"
,
"id"
:
403
,
"name"
:
"赣州"
},
{
"city_name"
:
"guangzhou"
,
"id"
:
409
,
"name"
:
"广州"
},
{
"city_name"
:
"guilin"
,
"id"
:
411
,
"name"
:
"桂林"
},
{
"city_name"
:
"guiyang"
,
"id"
:
412
,
"name"
:
"贵阳"
}
],
"title"
:
"G"
},
{
"is_hot"
:
false
,
"initial"
:
"H"
,
"cities"
:
[
{
"city_name"
:
"haerbin"
,
"id"
:
415
,
"name"
:
"哈尔滨"
},
{
"city_name"
:
"haikou"
,
"id"
:
419
,
"name"
:
"海口"
},
{
"city_name"
:
"handan"
,
"id"
:
423
,
"name"
:
"邯郸"
},
{
"city_name"
:
"hangzhou"
,
"id"
:
425
,
"name"
:
"杭州"
},
{
"city_name"
:
"hefei"
,
"id"
:
430
,
"name"
:
"合肥"
},
{
"city_name"
:
"hengshui"
,
"id"
:
434
,
"name"
:
"衡水"
},
{
"city_name"
:
"hengyang"
,
"id"
:
435
,
"name"
:
"衡阳"
},
{
"city_name"
:
"heyuan"
,
"id"
:
437
,
"name"
:
"河源"
},
{
"city_name"
:
"huaian"
,
"id"
:
441
,
"name"
:
"淮安"
},
{
"city_name"
:
"huaibei"
,
"id"
:
442
,
"name"
:
"淮北"
},
{
"city_name"
:
"huangshan"
,
"id"
:
449
,
"name"
:
"黄山"
},
{
"city_name"
:
"huangshi"
,
"id"
:
450
,
"name"
:
"黄石"
},
{
"city_name"
:
"huhehaote"
,
"id"
:
451
,
"name"
:
"呼和浩特"
},
{
"city_name"
:
"huizhou"
,
"id"
:
452
,
"name"
:
"惠州"
},
{
"city_name"
:
"huludao"
,
"id"
:
453
,
"name"
:
"葫芦岛"
},
{
"city_name"
:
"huzhou"
,
"id"
:
455
,
"name"
:
"湖州"
}
],
"title"
:
"H"
},
{
"is_hot"
:
false
,
"initial"
:
"J"
,
"cities"
:
[
{
"city_name"
:
"jiamusi"
,
"id"
:
457
,
"name"
:
"佳木斯"
},
{
"city_name"
:
"jian"
,
"id"
:
458
,
"name"
:
"吉安"
},
{
"city_name"
:
"jiangmen"
,
"id"
:
460
,
"name"
:
"江门"
},
{
"city_name"
:
"jiaozuo"
,
"id"
:
462
,
"name"
:
"焦作"
},
{
"city_name"
:
"jiaxing"
,
"id"
:
463
,
"name"
:
"嘉兴"
},
{
"city_name"
:
"jilin1"
,
"id"
:
467
,
"name"
:
"吉林"
},
{
"city_name"
:
"jinan"
,
"id"
:
468
,
"name"
:
"济南"
},
{
"city_name"
:
"jingzhou"
,
"id"
:
474
,
"name"
:
"荆州"
},
{
"city_name"
:
"jinhua"
,
"id"
:
475
,
"name"
:
"金华"
},
{
"city_name"
:
"jining"
,
"id"
:
476
,
"name"
:
"济宁"
},
{
"city_name"
:
"jinzhong"
,
"id"
:
479
,
"name"
:
"晋中"
},
{
"city_name"
:
"jinzhou"
,
"id"
:
480
,
"name"
:
"锦州"
}
],
"title"
:
"J"
},
{
"is_hot"
:
false
,
"initial"
:
"K"
,
"cities"
:
[
{
"city_name"
:
"kunming"
,
"id"
:
493
,
"name"
:
"昆明"
}
],
"title"
:
"K"
},
{
"is_hot"
:
false
,
"initial"
:
"L"
,
"cities"
:
[
{
"city_name"
:
"langfang"
,
"id"
:
497
,
"name"
:
"廊坊"
},
{
"city_name"
:
"lanzhou"
,
"id"
:
498
,
"name"
:
"兰州"
},
{
"city_name"
:
"lasa"
,
"id"
:
499
,
"name"
:
"拉萨"
},
{
"city_name"
:
"leshan"
,
"id"
:
501
,
"name"
:
"乐山"
},
{
"city_name"
:
"lianyungang"
,
"id"
:
504
,
"name"
:
"连云港"
},
{
"city_name"
:
"linyi"
,
"id"
:
514
,
"name"
:
"临沂"
},
{
"city_name"
:
"liupanshui"
,
"id"
:
518
,
"name"
:
"六盘水"
},
{
"city_name"
:
"liuzhou"
,
"id"
:
519
,
"name"
:
"柳州"
},
{
"city_name"
:
"luohe"
,
"id"
:
524
,
"name"
:
"漯河"
},
{
"city_name"
:
"luoyang"
,
"id"
:
525
,
"name"
:
"洛阳"
},
{
"city_name"
:
"luzhou"
,
"id"
:
526
,
"name"
:
"泸州"
}
],
"title"
:
"L"
},
{
"is_hot"
:
false
,
"initial"
:
"M"
,
"cities"
:
[
{
"city_name"
:
"maoming"
,
"id"
:
529
,
"name"
:
"茂名"
},
{
"city_name"
:
"meishan"
,
"id"
:
530
,
"name"
:
"眉山"
},
{
"city_name"
:
"mianyang"
,
"id"
:
533
,
"name"
:
"绵阳"
}
],
"title"
:
"M"
},
{
"is_hot"
:
false
,
"initial"
:
"N"
,
"cities"
:
[
{
"city_name"
:
"nanchang"
,
"id"
:
538
,
"name"
:
"南昌"
},
{
"city_name"
:
"nanchong"
,
"id"
:
539
,
"name"
:
"南充"
},
{
"city_name"
:
"nanjing"
,
"id"
:
542
,
"name"
:
"南京"
},
{
"city_name"
:
"nanning"
,
"id"
:
543
,
"name"
:
"南宁"
},
{
"city_name"
:
"nantong"
,
"id"
:
545
,
"name"
:
"南通"
},
{
"city_name"
:
"nanyang"
,
"id"
:
547
,
"name"
:
"南阳"
},
{
"city_name"
:
"neijiang"
,
"id"
:
549
,
"name"
:
"内江"
},
{
"city_name"
:
"ningbo"
,
"id"
:
550
,
"name"
:
"宁波"
}
],
"title"
:
"N"
},
{
"is_hot"
:
false
,
"initial"
:
"P"
,
"cities"
:
[
{
"city_name"
:
"panzhihua"
,
"id"
:
555
,
"name"
:
"攀枝花"
},
{
"city_name"
:
"putian"
,
"id"
:
564
,
"name"
:
"莆田"
},
{
"city_name"
:
"puyang"
,
"id"
:
565
,
"name"
:
"濮阳"
}
],
"title"
:
"P"
},
{
"is_hot"
:
false
,
"initial"
:
"Q"
,
"cities"
:
[
{
"city_name"
:
"qingdao"
,
"id"
:
572
,
"name"
:
"青岛"
},
{
"city_name"
:
"qingyuan"
,
"id"
:
575
,
"name"
:
"清远"
},
{
"city_name"
:
"qinhuangdao"
,
"id"
:
576
,
"name"
:
"秦皇岛"
},
{
"city_name"
:
"qiqihaer"
,
"id"
:
580
,
"name"
:
"齐齐哈尔"
},
{
"city_name"
:
"quanzhou"
,
"id"
:
582
,
"name"
:
"泉州"
},
{
"city_name"
:
"qujing"
,
"id"
:
583
,
"name"
:
"曲靖"
}
],
"title"
:
"Q"
},
{
"is_hot"
:
false
,
"initial"
:
"R"
,
"cities"
:
[
{
"city_name"
:
"rizhao"
,
"id"
:
586
,
"name"
:
"日照"
}
],
"title"
:
"R"
},
{
"is_hot"
:
false
,
"initial"
:
"S"
,
"cities"
:
[
{
"city_name"
:
"sanya"
,
"id"
:
591
,
"name"
:
"三亚"
},
{
"city_name"
:
"shanghai"
,
"id"
:
592
,
"name"
:
"上海"
},
{
"city_name"
:
"shangqiu"
,
"id"
:
594
,
"name"
:
"商丘"
},
{
"city_name"
:
"shangrao"
,
"id"
:
595
,
"name"
:
"上饶"
},
{
"city_name"
:
"shantou"
,
"id"
:
597
,
"name"
:
"汕头"
},
{
"city_name"
:
"shaoguan"
,
"id"
:
599
,
"name"
:
"韶关"
},
{
"city_name"
:
"shaoxing"
,
"id"
:
600
,
"name"
:
"绍兴"
},
{
"city_name"
:
"shaoyang"
,
"id"
:
601
,
"name"
:
"邵阳"
},
{
"city_name"
:
"shengzhou"
,
"id"
:
7401
,
"name"
:
"嵊州"
},
{
"city_name"
:
"shenyang"
,
"id"
:
603
,
"name"
:
"沈阳"
},
{
"city_name"
:
"shenzhen"
,
"id"
:
604
,
"name"
:
"深圳"
},
{
"city_name"
:
"shijiazhuang"
,
"id"
:
606
,
"name"
:
"石家庄"
},
{
"city_name"
:
"suining"
,
"id"
:
620
,
"name"
:
"遂宁"
},
{
"city_name"
:
"suizhou"
,
"id"
:
621
,
"name"
:
"随州"
},
{
"city_name"
:
"suzhou"
,
"id"
:
623
,
"name"
:
"苏州"
}
],
"title"
:
"S"
},
{
"is_hot"
:
false
,
"initial"
:
"T"
,
"cities"
:
[
{
"city_name"
:
"taian"
,
"id"
:
626
,
"name"
:
"泰安"
},
{
"city_name"
:
"taiyuan"
,
"id"
:
631
,
"name"
:
"太原"
},
{
"city_name"
:
"taizhou"
,
"id"
:
633
,
"name"
:
"泰州"
},
{
"city_name"
:
"taizhou1"
,
"id"
:
634
,
"name"
:
"台州"
},
{
"city_name"
:
"tangshan"
,
"id"
:
636
,
"name"
:
"唐山"
},
{
"city_name"
:
"tianjin"
,
"id"
:
638
,
"name"
:
"天津"
},
{
"city_name"
:
"tongren"
,
"id"
:
648
,
"name"
:
"铜仁"
}
],
"title"
:
"T"
},
{
"is_hot"
:
false
,
"initial"
:
"W"
,
"cities"
:
[
{
"city_name"
:
"weifang"
,
"id"
:
655
,
"name"
:
"潍坊"
},
{
"city_name"
:
"weihai"
,
"id"
:
656
,
"name"
:
"威海"
},
{
"city_name"
:
"weinan"
,
"id"
:
657
,
"name"
:
"渭南"
},
{
"city_name"
:
"wenzhou"
,
"id"
:
660
,
"name"
:
"温州"
},
{
"city_name"
:
"wuhan"
,
"id"
:
662
,
"name"
:
"武汉"
},
{
"city_name"
:
"wuhu"
,
"id"
:
663
,
"name"
:
"芜湖"
},
{
"city_name"
:
"wulumuqi"
,
"id"
:
666
,
"name"
:
"乌鲁木齐"
},
{
"city_name"
:
"wuwei"
,
"id"
:
669
,
"name"
:
"武威"
},
{
"city_name"
:
"wuxi"
,
"id"
:
670
,
"name"
:
"无锡"
}
],
"title"
:
"W"
},
{
"is_hot"
:
false
,
"initial"
:
"X"
,
"cities"
:
[
{
"city_name"
:
"xiamen"
,
"id"
:
674
,
"name"
:
"厦门"
},
{
"city_name"
:
"xian"
,
"id"
:
675
,
"name"
:
"西安"
},
{
"city_name"
:
"xiangtan"
,
"id"
:
678
,
"name"
:
"湘潭"
},
{
"city_name"
:
"xiangyang"
,
"id"
:
676
,
"name"
:
"襄阳"
},
{
"city_name"
:
"xianyang"
,
"id"
:
682
,
"name"
:
"咸阳"
},
{
"city_name"
:
"xingtai"
,
"id"
:
686
,
"name"
:
"邢台"
},
{
"city_name"
:
"xining"
,
"id"
:
687
,
"name"
:
"西宁"
},
{
"city_name"
:
"xinxiang"
,
"id"
:
689
,
"name"
:
"新乡"
},
{
"city_name"
:
"xishuangbanna"
,
"id"
:
695
,
"name"
:
"西双版纳"
},
{
"city_name"
:
"xuzhou"
,
"id"
:
699
,
"name"
:
"徐州"
}
],
"title"
:
"X"
},
{
"is_hot"
:
false
,
"initial"
:
"Y"
,
"cities"
:
[
{
"city_name"
:
"yancheng"
,
"id"
:
703
,
"name"
:
"盐城"
},
{
"city_name"
:
"yangzhou"
,
"id"
:
706
,
"name"
:
"扬州"
},
{
"city_name"
:
"yantai"
,
"id"
:
709
,
"name"
:
"烟台"
},
{
"city_name"
:
"yibin"
,
"id"
:
710
,
"name"
:
"宜宾"
},
{
"city_name"
:
"yichang"
,
"id"
:
711
,
"name"
:
"宜昌"
},
{
"city_name"
:
"yinchuan"
,
"id"
:
716
,
"name"
:
"银川"
},
{
"city_name"
:
"yingtan"
,
"id"
:
718
,
"name"
:
"鹰潭"
},
{
"city_name"
:
"yiwu"
,
"id"
:
297
,
"name"
:
"义乌"
},
{
"city_name"
:
"yiyang"
,
"id"
:
719
,
"name"
:
"益阳"
},
{
"city_name"
:
"yuncheng"
,
"id"
:
727
,
"name"
:
"运城"
},
{
"city_name"
:
"yuxi"
,
"id"
:
732
,
"name"
:
"玉溪"
}
],
"title"
:
"Y"
},
{
"is_hot"
:
false
,
"initial"
:
"Z"
,
"cities"
:
[
{
"city_name"
:
"zaozhuang"
,
"id"
:
733
,
"name"
:
"枣庄"
},
{
"city_name"
:
"zhangjiakou"
,
"id"
:
737
,
"name"
:
"张家口"
},
{
"city_name"
:
"zhanjiang"
,
"id"
:
741
,
"name"
:
"湛江"
},
{
"city_name"
:
"zhaoqing"
,
"id"
:
742
,
"name"
:
"肇庆"
},
{
"city_name"
:
"zhengzhou"
,
"id"
:
744
,
"name"
:
"郑州"
},
{
"city_name"
:
"zhenjiang"
,
"id"
:
745
,
"name"
:
"镇江"
},
{
"city_name"
:
"zhongshan"
,
"id"
:
746
,
"name"
:
"中山"
},
{
"city_name"
:
"zhoukou"
,
"id"
:
749
,
"name"
:
"周口"
},
{
"city_name"
:
"zhoushan"
,
"id"
:
750
,
"name"
:
"舟山"
},
{
"city_name"
:
"zhuhai"
,
"id"
:
751
,
"name"
:
"珠海"
},
{
"city_name"
:
"zhumadian"
,
"id"
:
752
,
"name"
:
"驻马店"
},
{
"city_name"
:
"zhuzhou"
,
"id"
:
753
,
"name"
:
"株洲"
},
{
"city_name"
:
"zibo"
,
"id"
:
754
,
"name"
:
"淄博"
},
{
"city_name"
:
"zunyi"
,
"id"
:
757
,
"name"
:
"遵义"
}
],
"title"
:
"Z"
}
]
},
{
"is_located"
:
false
,
"name"
:
"国际/港澳台"
,
"groups"
:
[
{
"is_hot"
:
true
,
"initial"
:
"热"
,
"cities"
:
[
{
"city_name"
:
"shouer"
,
"id"
:
612
,
"name"
:
"首尔"
},
{
"city_name"
:
"dongjing"
,
"id"
:
2669
,
"name"
:
"东京"
},
{
"city_name"
:
"mangu"
,
"id"
:
3936
,
"name"
:
"曼谷"
},
{
"city_name"
:
"jizhoushi"
,
"id"
:
2536
,
"name"
:
"济州岛"
},
{
"city_name"
:
"xianggangdao"
,
"id"
:
677
,
"name"
:
"香港"
}
],
"title"
:
"热门城市"
},
{
"initial"
:
"*"
,
"cities"
:
[
{
"city_name"
:
"worldwide"
,
"id"
:
"worldwide"
,
"name"
:
"全部城市"
}
],
"title"
:
"*"
},
{
"is_hot"
:
false
,
"initial"
:
"D"
,
"cities"
:
[
{
"city_name"
:
"dongjing"
,
"id"
:
2669
,
"name"
:
"东京"
}
],
"title"
:
"D"
},
{
"is_hot"
:
false
,
"initial"
:
"J"
,
"cities"
:
[
{
"city_name"
:
"jizhoushi"
,
"id"
:
2536
,
"name"
:
"济州岛"
}
],
"title"
:
"J"
},
{
"is_hot"
:
false
,
"initial"
:
"M"
,
"cities"
:
[
{
"city_name"
:
"mangu"
,
"id"
:
3936
,
"name"
:
"曼谷"
}
],
"title"
:
"M"
},
{
"is_hot"
:
false
,
"initial"
:
"S"
,
"cities"
:
[
{
"city_name"
:
"shouer"
,
"id"
:
612
,
"name"
:
"首尔"
}
],
"title"
:
"S"
},
{
"is_hot"
:
false
,
"initial"
:
"T"
,
"cities"
:
[
{
"city_name"
:
"taibei"
,
"id"
:
627
,
"name"
:
"台北"
}
],
"title"
:
"T"
},
{
"is_hot"
:
false
,
"initial"
:
"X"
,
"cities"
:
[
{
"city_name"
:
"xianggangdao"
,
"id"
:
677
,
"name"
:
"中国香港"
}
],
"title"
:
"X"
}
]
}
],
"tags"
:
[
{
"id"
:
"all"
,
"sub_tags"
:
[
{
"id"
:
"all"
,
"name"
:
"全部项目"
}
],
"name"
:
"全部项目"
},
{
"name"
:
"眼部整形"
,
"sub_tags"
:
[
{
"id"
:
1
,
"name"
:
"全部眼部整形"
},
{
"id"
:
15
,
"name"
:
"双眼皮"
},
{
"id"
:
16
,
"name"
:
"填充泪沟"
},
{
"id"
:
17
,
"name"
:
"开眼角"
},
{
"id"
:
18
,
"name"
:
"祛眼袋"
},
{
"id"
:
19
,
"name"
:
"祛黑眼圈"
},
{
"id"
:
63
,
"name"
:
"填充卧蚕"
},
{
"id"
:
64
,
"name"
:
"眼部修复"
},
{
"id"
:
884
,
"name"
:
"垫眉弓"
},
{
"id"
:
975
,
"name"
:
"眼睑"
},
{
"id"
:
3459
,
"name"
:
"眼部综合"
}
]
},
{
"name"
:
"鼻部整形"
,
"sub_tags"
:
[
{
"id"
:
2
,
"name"
:
"全部鼻部整形"
},
{
"id"
:
21
,
"name"
:
"隆鼻"
},
{
"id"
:
24
,
"name"
:
"鼻翼"
},
{
"id"
:
26
,
"name"
:
"鼻形矫正"
},
{
"id"
:
65
,
"name"
:
"鼻部修复"
},
{
"id"
:
896
,
"name"
:
"鼻基底"
},
{
"id"
:
3285
,
"name"
:
"鼻部综合"
}
]
},
{
"name"
:
"轮廓骨骼"
,
"sub_tags"
:
[
{
"id"
:
3
,
"name"
:
"全部轮廓骨骼"
},
{
"id"
:
28
,
"name"
:
"颧骨"
},
{
"id"
:
29
,
"name"
:
"额头"
},
{
"id"
:
30
,
"name"
:
"太阳穴"
},
{
"id"
:
45
,
"name"
:
"面颊"
},
{
"id"
:
46
,
"name"
:
"下巴"
},
{
"id"
:
81
,
"name"
:
"轮廓修复"
},
{
"id"
:
235
,
"name"
:
"下颌角切除术"
},
{
"id"
:
766
,
"name"
:
"祛颊脂垫"
},
{
"id"
:
812
,
"name"
:
"V-line瓜子脸手术"
},
{
"id"
:
898
,
"name"
:
"咬肌切除"
},
{
"id"
:
900
,
"name"
:
"两颚"
},
{
"id"
:
1136
,
"name"
:
"磨骨"
},
{
"id"
:
1233
,
"name"
:
"自体脂肪填充面部"
},
{
"id"
:
3047
,
"name"
:
"假体填充"
},
{
"id"
:
5060
,
"name"
:
"轮廓套餐"
},
{
"id"
:
6150
,
"name"
:
"手术套餐"
}
]
},
{
"name"
:
"瘦身美体"
,
"sub_tags"
:
[
{
"id"
:
4
,
"name"
:
"全部瘦身美体"
},
{
"id"
:
32
,
"name"
:
"腰腹"
},
{
"id"
:
33
,
"name"
:
"臀部"
},
{
"id"
:
38
,
"name"
:
"溶脂"
},
{
"id"
:
72
,
"name"
:
"中医减肥"
},
{
"id"
:
84
,
"name"
:
"手臂"
},
{
"id"
:
221
,
"name"
:
"吸脂"
},
{
"id"
:
892
,
"name"
:
"大腿"
},
{
"id"
:
893
,
"name"
:
"小腿"
},
{
"id"
:
894
,
"name"
:
"肩背"
},
{
"id"
:
5061
,
"name"
:
"瘦身套餐"
}
]
},
{
"name"
:
"皮肤美容"
,
"sub_tags"
:
[
{
"id"
:
5
,
"name"
:
"全部皮肤美容"
},
{
"id"
:
34
,
"name"
:
"祛痘祛痘印"
},
{
"id"
:
35
,
"name"
:
"祛斑"
},
{
"id"
:
41
,
"name"
:
"改善肤质"
},
{
"id"
:
47
,
"name"
:
"美白嫩肤"
},
{
"id"
:
60
,
"name"
:
"祛纹身"
},
{
"id"
:
78
,
"name"
:
"祛红血丝"
},
{
"id"
:
1387
,
"name"
:
"清洁补水"
},
{
"id"
:
1992
,
"name"
:
"祛痣"
},
{
"id"
:
2942
,
"name"
:
"祛疤"
}
]
},
{
"name"
:
"胸部塑身"
,
"sub_tags"
:
[
{
"id"
:
7
,
"name"
:
"全部胸部塑身"
},
{
"id"
:
66
,
"name"
:
"丰胸(隆胸)"
},
{
"id"
:
67
,
"name"
:
"乳头乳晕"
},
{
"id"
:
68
,
"name"
:
"副乳"
},
{
"id"
:
69
,
"name"
:
"胸部形态重塑"
},
{
"id"
:
70
,
"name"
:
"胸部修复"
},
{
"id"
:
5724
,
"name"
:
"胸部提升"
},
{
"id"
:
6144
,
"name"
:
"胸部套餐"
}
]
},
{
"name"
:
"毛发管理"
,
"sub_tags"
:
[
{
"id"
:
9
,
"name"
:
"全部毛发管理"
},
{
"id"
:
80
,
"name"
:
"毛发其他"
},
{
"id"
:
865
,
"name"
:
"药物脱毛"
},
{
"id"
:
983
,
"name"
:
"毛发移植"
},
{
"id"
:
2663
,
"name"
:
"激光脱毛"
},
{
"id"
:
2947
,
"name"
:
"光子脱毛"
}
]
},
{
"name"
:
"私密整形"
,
"sub_tags"
:
[
{
"id"
:
10
,
"name"
:
"全部私密整形"
},
{
"id"
:
955
,
"name"
:
"女性私密"
},
{
"id"
:
956
,
"name"
:
"男性私密"
}
]
},
{
"name"
:
"牙齿美容"
,
"sub_tags"
:
[
{
"id"
:
11
,
"name"
:
"全部牙齿美容"
},
{
"id"
:
53
,
"name"
:
"牙齿整形"
},
{
"id"
:
55
,
"name"
:
"美容冠"
},
{
"id"
:
154
,
"name"
:
"牙齿矫正"
},
{
"id"
:
155
,
"name"
:
"牙齿美白"
},
{
"id"
:
156
,
"name"
:
"烤瓷牙"
},
{
"id"
:
157
,
"name"
:
"洗牙"
},
{
"id"
:
158
,
"name"
:
"补牙"
},
{
"id"
:
159
,
"name"
:
"种植牙"
},
{
"id"
:
852
,
"name"
:
"拔牙"
},
{
"id"
:
2458
,
"name"
:
"瓷贴面"
}
]
},
{
"name"
:
"口唇整形"
,
"sub_tags"
:
[
{
"id"
:
12
,
"name"
:
"全部口唇整形"
},
{
"id"
:
31
,
"name"
:
"酒窝"
},
{
"id"
:
52
,
"name"
:
"丰唇"
},
{
"id"
:
903
,
"name"
:
"嘴角上提"
},
{
"id"
:
904
,
"name"
:
"厚唇"
},
{
"id"
:
907
,
"name"
:
"唇形"
}
]
},
{
"name"
:
"抗衰紧致"
,
"sub_tags"
:
[
{
"id"
:
922
,
"name"
:
"全部抗衰紧致"
},
{
"id"
:
62
,
"name"
:
"颈部"
},
{
"id"
:
79
,
"name"
:
"除皱"
},
{
"id"
:
933
,
"name"
:
"自体脂肪面部年轻化"
},
{
"id"
:
4422
,
"name"
:
"祛皱"
}
]
},
{
"name"
:
"注射美容"
,
"sub_tags"
:
[
{
"id"
:
992
,
"name"
:
"全部注射美容"
},
{
"id"
:
82
,
"name"
:
"微整修复"
},
{
"id"
:
1055
,
"name"
:
"玻尿酸注射"
},
{
"id"
:
2033
,
"name"
:
"瘦脸除皱"
},
{
"id"
:
3042
,
"name"
:
"胶原蛋白注射"
},
{
"id"
:
3044
,
"name"
:
"少女针"
},
{
"id"
:
3046
,
"name"
:
"童颜针"
},
{
"id"
:
5078
,
"name"
:
"微整套餐"
},
{
"id"
:
6147
,
"name"
:
"注射美肤"
}
]
},
{
"name"
:
"自体脂肪"
,
"sub_tags"
:
[
{
"id"
:
1024
,
"name"
:
"全部自体脂肪"
},
{
"id"
:
2112
,
"name"
:
"面部填充"
},
{
"id"
:
6102
,
"name"
:
"身体塑形"
},
{
"id"
:
7117
,
"name"
:
"脂肪其他"
}
]
},
{
"name"
:
"半永久"
,
"sub_tags"
:
[
{
"id"
:
1080
,
"name"
:
"全部半永久"
},
{
"id"
:
1370
,
"name"
:
"韩式半永久纹眉"
},
{
"id"
:
2054
,
"name"
:
"半永久妆"
},
{
"id"
:
2055
,
"name"
:
"韩式半永久飘眉"
},
{
"id"
:
2056
,
"name"
:
"韩式半永久雾眉"
},
{
"id"
:
2057
,
"name"
:
"韩式半永久纹眼线(美瞳线)"
},
{
"id"
:
2058
,
"name"
:
"韩式半永久漂唇"
},
{
"id"
:
2954
,
"name"
:
"韩式半永久纹发际线"
},
{
"id"
:
5079
,
"name"
:
"韩式半永久套餐"
},
{
"id"
:
6944
,
"name"
:
"半永久 生活美容"
}
]
},
{
"name"
:
"其他"
,
"sub_tags"
:
[
{
"id"
:
2214
,
"name"
:
"全部其他"
},
{
"id"
:
13
,
"name"
:
"耳部整形"
},
{
"id"
:
929
,
"name"
:
"视力矫正"
},
{
"id"
:
957
,
"name"
:
"祛腋臭"
},
{
"id"
:
971
,
"name"
:
"产后修复"
},
{
"id"
:
1134
,
"name"
:
"面膜"
},
{
"id"
:
2054
,
"name"
:
"半永久妆"
},
{
"id"
:
2955
,
"name"
:
"体检"
},
{
"id"
:
5433
,
"name"
:
"腿型矫正"
},
{
"id"
:
6418
,
"name"
:
"补差价"
},
{
"id"
:
6933
,
"name"
:
"生活美容"
},
{
"id"
:
7587
,
"name"
:
"大脚骨矫正"
},
{
"id"
:
11340
,
"name"
:
"塌鼻梁拯救计划"
},
{
"id"
:
11341
,
"name"
:
"Get元气初恋脸"
},
{
"id"
:
11342
,
"name"
:
"维密身材养成记"
},
{
"id"
:
11344
,
"name"
:
"电眼杀手俱乐部"
},
{
"id"
:
11345
,
"name"
:
"人间水蜜桃计划"
}
]
},
{
"name"
:
"眼科"
,
"sub_tags"
:
[
{
"id"
:
12711
,
"name"
:
"全部眼科"
},
{
"id"
:
932
,
"name"
:
"近视矫正"
},
{
"id"
:
940
,
"name"
:
"眼科其他"
}
]
}
],
"orders"
:
[
{
"id"
:
0
,
"name"
:
"智能排序"
},
{
"id"
:
1
,
"name"
:
"价格"
},
{
"id"
:
2
,
"name"
:
"好评率"
},
{
"id"
:
3
,
"name"
:
"销量"
}
]
}
}
""";
lib/MainRouter/MainRouterImpl.dart
View file @
832d5c91
...
@@ -45,7 +45,6 @@ class MainRouterImpl implements MainRouter {
...
@@ -45,7 +45,6 @@ class MainRouterImpl implements MainRouter {
@override
@override
void
getInitParams
(
VoidCallback
callback
)
{
void
getInitParams
(
VoidCallback
callback
)
{
print
(
"LST SECOND CALLBACK is null ?
${callback == null}
"
);
MainManager
.
getInstance
().
getInitParams
(
callback
);
MainManager
.
getInstance
().
getInitParams
(
callback
);
}
}
}
}
lib/MainRouter/manager/MainManager.dart
View file @
832d5c91
...
@@ -10,6 +10,7 @@ import 'package:flutter_boost/flutter_boost.dart';
...
@@ -10,6 +10,7 @@ import 'package:flutter_boost/flutter_boost.dart';
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/base/BaseUtil.dart'
;
import
'package:gm_flutter/commonModel/base/BaseUtil.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/cache/CacheManager.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'../../commonModel/App.dart'
;
import
'../../commonModel/App.dart'
;
...
@@ -72,21 +73,17 @@ class MainManager {
...
@@ -72,21 +73,17 @@ class MainManager {
innerSetData
(
map
,
BASE_URL
);
innerSetData
(
map
,
BASE_URL
);
DioUtil
.
setDefOptions
(
baseUrl:
"
${map[BASE_URL]}
/"
,
agent:
map
[
USER_AGENT
]);
DioUtil
.
setDefOptions
(
baseUrl:
"
${map[BASE_URL]}
/"
,
agent:
map
[
USER_AGENT
]);
if
(
map
[
COOKIE
]
==
null
)
{
//
if (map[COOKIE] == null) {
CacheManager
.
getInstance
().
get
(
MEMORY_CACHE
).
save
(
COOKIE
,
//
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393"
);
//
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393");
}
else
{
//
} else {
innerSetData
(
map
,
COOKIE
);
innerSetData
(
map
,
COOKIE
);
}
//
}
print
(
print
(
"LSY QQWWEERRTTYY
${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE)}
"
"LSY QQWWEERRTTYY
${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE)}
"
"
${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE) is String}
"
);
"
${CacheManager.getInstance().get(MEMORY_CACHE).get(COOKIE) is String}
"
);
DioUtil
.
getInstance
().
changeOpt
();
DioUtil
.
getInstance
().
changeOpt
();
print
(
"LSY QQ11 callback is NULL?
${callback == null}
"
);
SimpleEventBus
.
instance
().
notifyListener
(
"PlanPage!initState"
,
""
);
if
(
callback
!=
null
)
{
callback
();
}
print
(
"LSY QQ22"
);
}
}
void
innerSetData
(
Map
<
String
,
dynamic
>
map
,
String
str
)
{
void
innerSetData
(
Map
<
String
,
dynamic
>
map
,
String
str
)
{
...
...
lib/commonModel/view/baseRefreshIndicator.dart
View file @
832d5c91
...
@@ -8,6 +8,7 @@ import 'dart:math' as math;
...
@@ -8,6 +8,7 @@ import 'dart:math' as math;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/widgets.dart'
;
import
'package:flutter/widgets.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/eventbus/SimpleEventBus.dart'
;
import
'package:lottie/lottie.dart'
;
import
'package:lottie/lottie.dart'
;
// The over-scroll distance that moves the indicator to its maximum
// The over-scroll distance that moves the indicator to its maximum
...
@@ -167,14 +168,24 @@ class NestedScrollViewRefreshIndicatorState
...
@@ -167,14 +168,24 @@ class NestedScrollViewRefreshIndicatorState
static
final
Animatable
<
double
>
_kDragSizeFactorLimitTween
=
static
final
Animatable
<
double
>
_kDragSizeFactorLimitTween
=
Tween
<
double
>(
begin:
0.0
,
end:
_kDragSizeFactorLimit
);
Tween
<
double
>(
begin:
0.0
,
end:
_kDragSizeFactorLimit
);
Function
(
String
str
)
func
;
@override
@override
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
func
=
(
str
)
{
if
(
str
==
"refresh"
)
{
if
(
mounted
)
{
_show
();
}
}
};
SimpleEventBus
.
instance
()
.
resignEvent
(
"BaseNestedScrollViewRefreshIndicator"
,
func
);
_positionController
=
AnimationController
(
vsync:
this
);
_positionController
=
AnimationController
(
vsync:
this
);
_positionFactor
=
_positionController
.
drive
(
_kDragSizeFactorLimitTween
);
_positionFactor
=
_positionController
.
drive
(
_kDragSizeFactorLimitTween
);
_value
=
_positionController
.
drive
(
_value
=
_positionController
.
drive
(
_threeQuarterTween
);
// The "value" of the circular progress indicator during a drag.
_threeQuarterTween
);
// The "value" of the circular progress indicator during a drag.
}
}
@override
@override
...
@@ -192,6 +203,8 @@ class NestedScrollViewRefreshIndicatorState
...
@@ -192,6 +203,8 @@ class NestedScrollViewRefreshIndicatorState
@override
@override
void
dispose
()
{
void
dispose
()
{
SimpleEventBus
.
instance
()
.
unResignEvent
(
"BaseNestedScrollViewRefreshIndicator"
,
func
);
_positionController
.
dispose
();
_positionController
.
dispose
();
super
.
dispose
();
super
.
dispose
();
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment