Commit 826c7070 authored by 林生雨's avatar 林生雨

Merge branch 'zcc/flutter' into 'test'

Zcc/flutter

See merge request !11
parents afd0de6b 1212aedc
...@@ -10,9 +10,9 @@ import 'package:gm_flutter/ClueModel/ClueRouterImpl.dart'; ...@@ -10,9 +10,9 @@ import 'package:gm_flutter/ClueModel/ClueRouterImpl.dart';
@Router("ClueRouter", ClueRouterImpl, true) @Router("ClueRouter", ClueRouterImpl, true)
abstract class ClueRouter implements RouterBaser { abstract class ClueRouter implements RouterBaser {
Widget getProjectDetailsPage(); Widget getProjectDetailsPage(Map<String,dynamic> params);
Widget getPlansCompareFeed(); Widget getPlansCompareFeed(Map<String,dynamic> params);
Widget getLevelOnePage(Map<String,dynamic> params); Widget getLevelOnePage(Map<String,dynamic> params);
......
...@@ -5,22 +5,22 @@ ...@@ -5,22 +5,22 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/framework.dart';
import 'package:gm_flutter/ClueModel/ClueRouter.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/PlansCompareFeed/PlansCompareFeedPage.dart';
import 'package:gm_flutter/ClueModel/page/ProjectDetails/ProjectDetailsPage.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/levelOne/LevelOnePage.dart';
import 'package:gm_flutter/ClueModel/page/levelTwo/LevelTwoPage.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/plan/PlanPage.dart';
import 'package:gm_flutter/ClueModel/page/PlanCompareDetail/PlanCompareDetailPage.dart';
import 'package:gm_flutter/ClueModel/page/top/TopPage.dart'; import 'package:gm_flutter/ClueModel/page/top/TopPage.dart';
class ClueRouterImpl implements ClueRouter { class ClueRouterImpl implements ClueRouter {
@override @override
Widget getProjectDetailsPage() { Widget getProjectDetailsPage(Map<String, dynamic> params) {
return ProjectDetailsPage(1); return ProjectDetailsPage(params);
} }
@override @override
Widget getLevelOnePage(Map<String,dynamic> params) { Widget getLevelOnePage(Map<String, dynamic> params) {
return LevelOnePage(params); return LevelOnePage(params);
} }
...@@ -30,8 +30,8 @@ class ClueRouterImpl implements ClueRouter { ...@@ -30,8 +30,8 @@ class ClueRouterImpl implements ClueRouter {
} }
@override @override
Widget getPlansCompareFeed() { Widget getPlansCompareFeed(Map<String, dynamic> params) {
return PlansCompareFeedPage(123,1); return PlansCompareFeedPage(params);
} }
@override @override
......
...@@ -20,11 +20,9 @@ class PlansCompareFeedItemView extends StatefulWidget { ...@@ -20,11 +20,9 @@ class PlansCompareFeedItemView extends StatefulWidget {
class _PlansCompareFeedItemViewState class _PlansCompareFeedItemViewState
extends BaseState<PlansCompareFeedItemView> { extends BaseState<PlansCompareFeedItemView> {
ImageIcon _checked = ImageIcon(AssetImage("assets/icon_compare_select.png")); String _checked = "assets/icon_compare_select.png";
String _unchecked = "assets/icon_compare_unselect.png";
ImageIcon _unchecked = String _icon = "assets/icon_compare_unselect.png";
ImageIcon(AssetImage("assets/icon_compare_unselect.png"));
ImageIcon _icon = ImageIcon(AssetImage("assets/icon_compare_unselect.png"));
@override @override
Widget buildItem(BuildContext context) { Widget buildItem(BuildContext context) {
...@@ -48,10 +46,19 @@ class _PlansCompareFeedItemViewState ...@@ -48,10 +46,19 @@ class _PlansCompareFeedItemViewState
padding: EdgeInsets.only(top: 20, bottom: 20), padding: EdgeInsets.only(top: 20, bottom: 20),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
IconButton( GestureDetector(
icon: _icon, behavior: HitTestBehavior.opaque,
onPressed: () => onClickCheckBox(_icon), onTap: () => onClickCheckBox(_icon),
), child: Container(
alignment: Alignment.center,
child: ClipRRect(
child: Image.asset(
_icon,
width: 17,
height: 17,
fit: BoxFit.fill,
)),
)),
Container( Container(
margin: EdgeInsets.only(left: 15, right: 15), margin: EdgeInsets.only(left: 15, right: 15),
child: ClipRRect( child: ClipRRect(
...@@ -64,29 +71,33 @@ class _PlansCompareFeedItemViewState ...@@ -64,29 +71,33 @@ class _PlansCompareFeedItemViewState
), ),
), ),
), ),
Container( Expanded(
height: 50,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.only(top: 2, bottom: 5), margin: EdgeInsets.only(top: 2, bottom: 8),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
baseText(widget.plan.name, 14, Color(0xFF282828), baseText(widget.plan.name, 14, Color(0xFF282828),
bold: true), bold: true),
baseText(" 好评率 ", 11, Color(0xFF282828)), Row(children: <Widget>[
baseText(widget.plan.positiveRate, 14, Color(0xFFFF5963), baseText("好评率 ", 11, Color(0xFF282828)),
bold: true), baseText(
widget.plan.positiveRate, 14, Color(0xFFFF5963),
bold: true)
]),
], ],
), ),
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}', baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}',
13, Color(0xFFFF5963)), 13, Color(0xFFFF5963)),
baseText(" 销量${widget.plan.salesCount}", 11, baseText(
Color(0xFF282828)) "销量${widget.plan.salesCount}", 11, Color(0xFF282828))
], ],
) )
], ],
...@@ -105,12 +116,22 @@ class _PlansCompareFeedItemViewState ...@@ -105,12 +116,22 @@ class _PlansCompareFeedItemViewState
Container( Container(
margin: EdgeInsets.only(right: 15.0), margin: EdgeInsets.only(right: 15.0),
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: IconButton( child: GestureDetector(
icon: _icon, behavior: HitTestBehavior.opaque,
onPressed: () => onClickCheckBox(_icon), onTap: () => onClickCheckBox(_icon),
), child: Container(
alignment: Alignment.center,
child: ClipRRect(
child: Image.asset(
_icon,
width: 17,
height: 17,
fit: BoxFit.fill,
)),
)),
), ),
Column( Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
...@@ -119,24 +140,23 @@ class _PlansCompareFeedItemViewState ...@@ -119,24 +140,23 @@ class _PlansCompareFeedItemViewState
bold: true), bold: true),
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}', baseText('¥${widget.plan.minPrice}-${widget.plan.maxPrice}',
13, Color(0xFFFF5963)), 13, Color(0xFFFF5963)),
Container( baseText("指导价:¥${widget.plan.guidePrice}", 11,
width: 160, Color(0xFF282828)),
alignment: Alignment.centerRight,
child: baseText("指导价:¥${widget.plan.guidePrice}", 11,
Color(0xFF282828))),
], ],
), ),
], ],
),
) )
], ],
), ),
); );
} }
onClickCheckBox(ImageIcon icon) { onClickCheckBox(String icon) {
if (icon == _checked) { if (icon == _checked) {
_icon = _unchecked; _icon = _unchecked;
} else { } else {
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
**/ **/
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.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/page/PlansCompareFeed/PlansCompareFeedModel.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlansCompareFeed.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlansCompareFeed.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; 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/main.mark.dart';
import 'CallBackCompareItem.dart'; import 'CallBackCompareItem.dart';
import 'PlansCompareFeedItemView.dart'; import 'PlansCompareFeedItemView.dart';
...@@ -18,7 +18,10 @@ class PlansCompareFeedPage extends StatefulWidget { ...@@ -18,7 +18,10 @@ class PlansCompareFeedPage extends StatefulWidget {
int _planType; int _planType;
int _planId; int _planId;
PlansCompareFeedPage(this._planType, this._planId); PlansCompareFeedPage(Map<String, dynamic> params) {
this._planType = params["planType"];
this._planId = params["planId"];
}
@override @override
State<StatefulWidget> createState() => _PlansCompareFeedState(); State<StatefulWidget> createState() => _PlansCompareFeedState();
...@@ -75,7 +78,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage> ...@@ -75,7 +78,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
} }
if (item.error != 0) { if (item.error != 0) {
return errorItem(MediaQuery.of(context).size.width, 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); return getList(item.data.plans);
}, },
...@@ -107,9 +112,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage> ...@@ -107,9 +112,9 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
onClickCompare() { onClickCompare() {
if (_compareColor == Color(0xFFCCCCCC)) return; if (_compareColor == Color(0xFFCCCCCC)) return;
setState(() { setState(() {
Map<String, dynamic> map = {}; RouterCenterImpl()
map["ids"] = _setCompare; .findMainRouter()
FlutterBoost.singleton.open("sample", urlParams: map); .jumpPage(context, "pageName", {"ids": _setCompare}, false);
}); });
} }
......
...@@ -15,7 +15,9 @@ import '../../server/entity/ProjectDetailsItem.dart'; ...@@ -15,7 +15,9 @@ import '../../server/entity/ProjectDetailsItem.dart';
class ProjectDetailsPage extends StatefulWidget { class ProjectDetailsPage extends StatefulWidget {
int _planId; int _planId;
ProjectDetailsPage(this._planId); ProjectDetailsPage(Map<String, dynamic> params) {
this._planId = params["planId"];
}
@override @override
State<StatefulWidget> createState() => _ProjectDetailsState(); State<StatefulWidget> createState() => _ProjectDetailsState();
...@@ -62,24 +64,14 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> { ...@@ -62,24 +64,14 @@ class _ProjectDetailsState extends BaseState<ProjectDetailsPage> {
} }
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) {
return emptyItem(MediaQuery return emptyItem(MediaQuery.of(context).size.width,
.of(context) MediaQuery.of(context).size.height);
.size
.width,
MediaQuery
.of(context)
.size
.height);
} }
if (item.error != 0) { if (item.error != 0) {
return errorItem(MediaQuery return errorItem(MediaQuery.of(context).size.width,
.of(context) MediaQuery.of(context).size.height, () {
.size _model.init(widget._planId);
.width, });
MediaQuery
.of(context)
.size
.height, () {});
} }
return ListView.builder( return ListView.builder(
itemCount: item.data.groups.length, itemCount: item.data.groups.length,
......
...@@ -35,9 +35,10 @@ class JumpManager { ...@@ -35,9 +35,10 @@ class JumpManager {
return { return {
"flutter://clueLevelOne": "flutter://clueLevelOne":
RouterCenterImpl().findClueRouter().getLevelOnePage(params), RouterCenterImpl().findClueRouter().getLevelOnePage(params),
"flutter://cluePlan": "flutter://clueProjectDetails":
RouterCenterImpl().findClueRouter().getPlanPage(), RouterCenterImpl().findClueRouter().getProjectDetailsPage(params),
"flutter://cluePlansCompareFeed":
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
}; };
} }
} }
...@@ -46,11 +46,11 @@ class TestState extends BaseState<TestPage> { ...@@ -46,11 +46,11 @@ class TestState extends BaseState<TestPage> {
})); }));
list.add(listItem("项目说明", () { list.add(listItem("项目说明", () {
JumpUtil.jumpToPageRight( JumpUtil.jumpToPageRight(
context, RouterCenterImpl().findClueRouter().getProjectDetailsPage()); context, RouterCenterImpl().findClueRouter().getProjectDetailsPage({"planId":1}));
})); }));
list.add(listItem("方案对比", () { list.add(listItem("方案对比", () {
JumpUtil.jumpToPageRight( JumpUtil.jumpToPageRight(
context, RouterCenterImpl().findClueRouter().getPlansCompareFeed()); context, RouterCenterImpl().findClueRouter().getPlansCompareFeed({"planId":1,"planType":1}));
})); }));
list.add(listItem("榜单", () { list.add(listItem("榜单", () {
JumpUtil.jumpToPageRight( JumpUtil.jumpToPageRight(
......
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