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
2c467f3d
Commit
2c467f3d
authored
Jul 01, 2020
by
朱璇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对比详情
parent
54cb8cd7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
276 additions
and
1 deletion
+276
-1
launch.json
.vscode/launch.json
+14
-0
PlanCompareDetailModel.dart
...eModel/page/PlanCompareDetail/PlanCompareDetailModel.dart
+29
-0
PlanCompareDetailPage.dart
...ueModel/page/PlanCompareDetail/PlanCompareDetailPage.dart
+68
-0
ClueApi.dart
lib/ClueModel/server/api/ClueApi.dart
+4
-1
ClueApi.serv.dart
lib/ClueModel/server/api/ClueApi.serv.dart
+19
-0
PlanCompareDetail.dart
lib/ClueModel/server/entity/PlanCompareDetail.dart
+142
-0
No files found.
.vscode/launch.json
0 → 100644
View file @
2c467f3d
{
//
Use
IntelliSense
to
learn
about
possible
attributes.
//
Hover
to
view
descriptions
of
existing
attributes.
//
For
more
information
,
visit
:
https
:
//go.microsoft.com/fwlink/?linkid=
830387
"version"
:
"0.2.0"
,
"configurations"
:
[
{
"name"
:
"Flutter"
,
"request"
:
"launch"
,
"type"
:
"dart"
}
]
}
\ No newline at end of file
lib/ClueModel/page/PlanCompareDetail/PlanCompareDetailModel.dart
0 → 100644
View file @
2c467f3d
/*
* @Author: zx
* @Date: 2020-06-30 17:43:13
* @Last Modified by: zx
* @Last Modified time: 2020-06-30 22:01:01
*/
import
'package:flutter_common/commonModel/live/BaseModel.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/PlanCompareDetail.dart'
;
import
'package:gm_flutter/commonModel/GMBase.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/rx/RxDispose.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
class
PlanCompareDetailModel
extends
BaseModel
{
@override
void
dispose
()
{
// showTab.dispost();
// cardsLive.dispost();
// appBarLive.dispost();
// rectLive.dispost();
// topIndexLive.dispost();
// topScrollLive.dispost();
}
}
\ No newline at end of file
lib/ClueModel/page/PlanCompareDetail/PlanCompareDetailPage.dart
0 → 100644
View file @
2c467f3d
/*
* @Author: zx
* @Date: 2020-06-30 17:40:43
* @Last Modified by: zx
* @Last Modified time: 2020-06-30 22:03:43
*/
import
'package:cached_network_image/cached_network_image.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:gm_flutter/ClueModel/page/PlanCompareDetail/PlanCompareDetailModel.dart'
;
import
'package:gm_flutter/ClueModel/util/PosUtil.dart'
;
import
'package:gm_flutter/ClueModel/view/FiveStarView.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
class
PlanCompareDetailPage
extends
StatefulWidget
{
@override
State
<
StatefulWidget
>
createState
()
=>
PlanCompareDetailPageState
();
}
class
PlanCompareDetailPageState
extends
BaseState
<
PlanCompareDetailPage
>
{
PlanCompareDetailModel
_model
=
new
PlanCompareDetailModel
();
PageController
pageController
=
new
PageController
();
double
screenWidth
;
List
<
Widget
>
oneList
=
new
List
();
@override
void
initState
()
{
super
.
initState
();
pageController
.
addListener
(()
{
if
(
screenWidth
!=
null
)
{
// _model.topScrollLive.notifyView(
// pageController.offset / screenWidth * (screenWidth / 4));
}
});
// oneList.add(head());
// oneList.add(good());
// oneList.add(rect());
// oneList.add(explain());
// oneList.add(Container(
// height: 5,
// color: Color(0xffF7F6FA),
// ));
// oneList.add(feed());
// oneList.add(pages());
}
@override
void
dispose
()
{
_model
.
dispose
();
pageController
.
dispose
();
// _refreshController.dispose();
pageController
.
dispose
();
super
.
dispose
();
}
@override
Widget
buildItem
(
BuildContext
context
)
{
screenWidth
=
MediaQuery
.
of
(
context
).
size
.
width
;
return
Scaffold
();
}
}
lib/ClueModel/server/api/ClueApi.dart
View file @
2c467f3d
...
...
@@ -6,10 +6,13 @@ import 'package:flutter_common/Annotations/anno/Get.dart';
import
'package:flutter_common/Annotations/anno/Query.dart'
;
import
'package:flutter_common/Annotations/anno/ServiceCenter.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/PlanCompareDetail.dart'
;
@ServiceCenter
()
abstract
class
ClueApi
{
@Get
(
"api/janus/plans/plan_feed"
)
LevelOneFeedList
getLevelOneList
(
@Query
(
"plan_id"
)
int
plan_id
,
@Query
(
"tab_type"
)
String
tab_type
,
@Query
(
"page"
)
int
page
);
@Get
(
"api/janus/plans/compare"
)
PlanCompareDetail
getPlanCompareDetail
(
@Query
(
"plan_ids"
)
List
<
int
>
plan_ids
);
}
lib/ClueModel/server/api/ClueApi.serv.dart
View file @
2c467f3d
...
...
@@ -15,6 +15,7 @@ import 'package:dio/dio.dart';
import
'package:flutter/foundation.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/PlanCompareDetail.dart'
;
const
bool
inProduction
=
const
bool
.
fromEnvironment
(
"dart.vm.product"
);
...
...
@@ -49,6 +50,20 @@ class ClueApiImpl {
});
}
Stream
<
PlanCompareDetail
>
getPlanCompareDetail
(
Dio
_dio
,
List
<
int
>
plan_ids
)
{
return
Stream
.
fromFuture
(
get
(
_dio
,
'api/janus/plans/compare'
,
data:
{
'plan_ids'
:
plan_ids
,
})).
flatMap
((
value
)
{
if
(
value
!=
null
&&
(
value
.
statusCode
>=
200
&&
value
.
statusCode
<
300
))
{
return
Stream
.
fromFuture
(
compute
(
parsePlanCompareDetail
,
value
.
toString
()));
}
else
{
throw
Exception
(
"--未知网络错误--"
);
}
});
}
///==================base method==================
Future
<
Response
>
get
(
Dio
_dio
,
url
,
{
data
,
options
,
cancelToken
})
async
{
...
...
@@ -189,3 +204,7 @@ class ClueApiImpl {
LevelOneFeedList
parseLevelOneFeedList
(
String
value
)
{
return
LevelOneFeedList
.
fromJson
(
json
.
decode
(
value
));
}
PlanCompareDetail
parsePlanCompareDetail
(
String
value
)
{
return
PlanCompareDetail
.
fromJson
(
json
.
decode
(
value
));
}
lib/ClueModel/server/entity/PlanCompareDetail.dart
0 → 100644
View file @
2c467f3d
/*
* @Author: zx
* @Date: 2020-06-30 19:31:32
* @Last Modified by: zx
* @Last Modified time: 2020-06-30 21:51:15
*/
import
'dart:convert'
;
class
PlanCompareDetail
{
int
error
;
String
message
;
Data
data
;
PlanCompareDetail
({
this
.
error
,
this
.
message
,
this
.
data
});
PlanCompareDetail
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
error
=
json
[
'error'
];
message
=
json
[
'message'
];
data
=
json
[
'data'
]
!=
null
?
new
Data
.
fromJson
(
json
[
'data'
])
:
null
;
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
if
(
this
.
data
!=
null
)
{
data
[
'data'
]
=
this
.
data
.
toJson
();
}
return
data
;
}
}
class
Data
{
List
<
Groups
>
groups
;
Data
({
this
.
groups
});
Data
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
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
.
groups
!=
null
)
{
data
[
'groups'
]
=
this
.
groups
.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
return
data
;
}
}
class
Groups
{
String
groupType
;
String
groupName
;
List
<
Plans
>
plans
;
Groups
({
this
.
groupType
,
this
.
groupName
,
this
.
plans
});
Groups
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
groupType
=
json
[
'group_type'
];
groupName
=
json
[
'group_name'
];
if
(
json
[
'plans'
]
!=
null
)
{
plans
=
new
List
<
Plans
>();
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
;
data
[
'group_name'
]
=
this
.
groupName
;
if
(
this
.
plans
!=
null
)
{
data
[
'plans'
]
=
this
.
plans
.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
return
data
;
}
}
class
Plans
{
int
planId
;
String
planName
;
String
minPrice
;
String
maxPrice
;
String
positiveRate
;
String
salesCount
;
List
<
Attrs
>
attrs
;
Plans
({
this
.
planId
,
this
.
planName
,
this
.
minPrice
,
this
.
maxPrice
,
this
.
positiveRate
,
this
.
salesCount
,
this
.
attrs
});
Plans
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
planId
=
json
[
'plan_id'
];
planName
=
json
[
'plan_name'
];
minPrice
=
json
[
'min_price'
];
maxPrice
=
json
[
'max_price'
];
positiveRate
=
json
[
'positive_rate'
];
salesCount
=
json
[
'sales_count'
];
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
[
'plan_name'
]
=
this
.
planName
;
data
[
'min_price'
]
=
this
.
minPrice
;
data
[
'max_price'
]
=
this
.
maxPrice
;
data
[
'positive_rate'
]
=
this
.
positiveRate
;
data
[
'sales_count'
]
=
this
.
salesCount
;
if
(
this
.
attrs
!=
null
)
{
data
[
'attrs'
]
=
this
.
attrs
.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
return
data
;
}
}
class
Attrs
{
String
attrName
;
String
attrValue
;
Attrs
({
this
.
attrName
,
this
.
attrValue
});
Attrs
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
attrName
=
json
[
'attr_name'
];
attrValue
=
json
[
'attr_value'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'attr_name'
]
=
this
.
attrName
;
data
[
'attr_value'
]
=
this
.
attrValue
;
return
data
;
}
}
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