comment.dart 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/common/common.dart';
  4. import 'package:liftmanager/internal/account/account_router.dart';
  5. import 'package:liftmanager/internal/account/model/user_info_entity.dart';
  6. import 'package:liftmanager/internal/account/provider/user_provider.dart';
  7. import 'package:liftmanager/internal/wode/wode_router.dart';
  8. import 'package:liftmanager/net/api_service.dart';
  9. import 'package:liftmanager/routers/fluro_navigator.dart';
  10. import 'package:liftmanager/utils/image_utils.dart';
  11. import 'package:liftmanager/widgets/app_bar.dart';
  12. import 'package:liftmanager/widgets/click_item.dart';
  13. import 'package:liftmanager/widgets/load_image.dart';
  14. import 'package:liftmanager/widgets/my_button.dart';
  15. import 'package:provider/provider.dart';
  16. import 'package:liftmanager/widgets/bbs_content.dart';
  17. import 'package:liftmanager/internal/bbs/bbs_router.dart';
  18. import 'package:flutter_screenutil/flutter_screenutil.dart';
  19. import 'package:liftmanager/widgets/star_item.dart';
  20. import 'package:liftmanager/res/resources.dart';
  21. class CommentMaster extends StatefulWidget {
  22. // Comment(this.type);
  23. // final String type;
  24. @override
  25. State<StatefulWidget> createState() {
  26. return CommentMasterState();
  27. }
  28. }
  29. class CommentMasterState extends State<CommentMaster> with AutomaticKeepAliveClientMixin {
  30. UserProvider provider = UserProvider();
  31. Map<String,String>obj={
  32. "pic":"temporary/avator2",
  33. "name":"张涛",
  34. "serviceType":"出诊服务",
  35. "time":"01月05日",
  36. "brand":"奥的斯",
  37. "desc":"电梯故障紧急维修、电梯保养、电梯短路处理、电梯闸门故障维修",
  38. "price":"20",
  39. "num":"299",
  40. "point":"5.0",
  41. "id":"2",
  42. "type":"2"
  43. };
  44. double serviceLevel = 0;
  45. double serviceTaidu = 0;
  46. double speed = 0;
  47. TextEditingController _controller = TextEditingController();
  48. @override
  49. void initState() {
  50. // TODO: implement initState
  51. super.initState();
  52. }
  53. @override
  54. Widget build(BuildContext context) {
  55. double width = MediaQuery.of(context).size.width;
  56. return
  57. // Center(child:new Text("个人中心"));
  58. ChangeNotifierProvider<UserProvider>(
  59. create: (_) => provider,
  60. child:
  61. Scaffold(
  62. appBar: MyAppBar(
  63. centerTitle: "评价本次服务",
  64. ),
  65. body: Consumer<UserProvider>(builder: (_, provider, __) {
  66. return Stack(
  67. children:<Widget>[
  68. ListView(padding: EdgeInsets.all(0.0), children: <Widget>[
  69. UserDetail(obj: obj,),
  70. Container(
  71. color: Color(0xffFAF7FA),
  72. height: ScreenUtil().setWidth(5),
  73. ),
  74. Container(
  75. padding: EdgeInsets.only(left:ScreenUtil().setWidth(15),top:ScreenUtil().setWidth(15),bottom:ScreenUtil().setWidth(15)),
  76. child: Text(
  77. '您对专家的服务满意吗?',
  78. style: TextStyle(
  79. color:Color(0xff333333),
  80. fontSize:ScreenUtil().setSp(16)
  81. ),
  82. textAlign:TextAlign.start,
  83. ),
  84. ),
  85. Container(
  86. child:Column(
  87. children:<Widget>[
  88. StarItem(
  89. title: "技术水平:",
  90. starRating: serviceLevel,
  91. onRatingChanged: (res){
  92. serviceLevel = res;
  93. setState(() {
  94. });
  95. },
  96. ),
  97. StarItem(
  98. title: "服务态度:",
  99. starRating: serviceTaidu,
  100. onRatingChanged: (res){
  101. serviceTaidu = res;
  102. setState(() {
  103. });
  104. },
  105. ),
  106. StarItem(
  107. title: "响应速度:",
  108. starRating: speed,
  109. onRatingChanged: (res){
  110. speed = res;
  111. setState(() {
  112. });
  113. },
  114. ),
  115. SizedBox(
  116. height: 8,
  117. ),
  118. Container(
  119. decoration: BoxDecoration(
  120. border: Border.all(
  121. width:0.5,
  122. color:Color(0xffcccccc)
  123. ),
  124. color: Colors.white,
  125. ),
  126. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(15)),
  127. child: Padding(
  128. padding: const EdgeInsets.only(
  129. top: 5, left: 15.0, right: 15.0, bottom: 8.0),
  130. child: TextField(
  131. // maxLength: 100,
  132. maxLines: 5,
  133. autofocus: false,
  134. controller: _controller,
  135. // keyboardType: widget.keyboardType,
  136. //style: TextStyles.textDark14,
  137. decoration: InputDecoration(
  138. hintText: "您的满意是对专家最大的支持和鼓励",
  139. border: InputBorder.none,
  140. hintStyle: TextStyles.textGray14)),
  141. ),
  142. ),
  143. ]
  144. )
  145. )
  146. ]),
  147. Positioned(
  148. bottom:0,
  149. left:0,
  150. child:Row(
  151. children:<Widget>[
  152. Container(
  153. height:ScreenUtil().setWidth(44),
  154. decoration: BoxDecoration(
  155. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)),
  156. gradient: const LinearGradient(
  157. colors: [Color(0xFF00D9FF), Color(0xFF0287FF)]),
  158. ),
  159. margin: EdgeInsets.all(ScreenUtil().setWidth(20)),
  160. width: width*0.9,
  161. child: FlatButton(
  162. // padding: EdgeInsets.all(15.0),
  163. child: Text("提交"),
  164. // color: Theme
  165. // .of(context)
  166. // .primaryColor,
  167. textColor: Colors.white,
  168. onPressed: () {
  169. NavigatorUtils.push(context,WodeRouter.orderPage);
  170. },
  171. ),
  172. )
  173. ]
  174. )
  175. )
  176. ]
  177. );
  178. })));
  179. }
  180. @override
  181. bool get wantKeepAlive => true;
  182. }
  183. class UserDetail extends StatelessWidget {
  184. UserDetail({Key key,this.obj}) : super(key: key);
  185. Map<String,String>obj;
  186. @override
  187. Widget build(BuildContext context) {
  188. return Container(
  189. // height: 20,
  190. padding:EdgeInsets.only(bottom:ScreenUtil().setWidth(20),top:ScreenUtil().setWidth(10)),
  191. child: Row(
  192. crossAxisAlignment: CrossAxisAlignment.start,
  193. children: <Widget>[
  194. Expanded(
  195. child: GestureDetector(
  196. onTap: (){
  197. NavigatorUtils.push(context, WodeRouter.orderDetail);
  198. },
  199. child:Row(
  200. crossAxisAlignment: CrossAxisAlignment.start,
  201. children:<Widget>[
  202. Container(
  203. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(10),top:ScreenUtil().setWidth(5)),
  204. decoration: BoxDecoration(
  205. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(25)),
  206. ),
  207. child: LoadAssetImage(
  208. // image: AssetImage(i['img']),
  209. obj["pic"],
  210. width: ScreenUtil().setWidth(43),
  211. height:ScreenUtil().setWidth(43),
  212. // alignment: Alignment.centerLeft,
  213. ),
  214. ),
  215. Expanded(
  216. child: Container(
  217. padding: EdgeInsets.only(right:ScreenUtil().setWidth(15)),
  218. child:Column(
  219. children: <Widget>[
  220. Container(
  221. child:Row(
  222. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  223. children:<Widget>[
  224. Row(
  225. crossAxisAlignment: CrossAxisAlignment.center,
  226. children:<Widget>[
  227. Text(
  228. obj["name"],
  229. style: TextStyle(
  230. color:Color(0xff333333),
  231. fontSize:ScreenUtil().setSp(18)
  232. ),
  233. textAlign:TextAlign.start,
  234. ),
  235. Container(
  236. padding: EdgeInsets.only(left:5),
  237. child:Text(
  238. obj["brand"],
  239. style: TextStyle(
  240. color:Color(0xff666666),
  241. fontSize:ScreenUtil().setSp(14)
  242. ),
  243. textAlign:TextAlign.start,
  244. ),
  245. )
  246. ]
  247. ),
  248. ]
  249. )
  250. ),
  251. Align(
  252. child:Text(
  253. obj["desc"],
  254. style: TextStyle(
  255. color:Color(0xff999999),
  256. fontSize:ScreenUtil().setSp(14)
  257. ),
  258. textAlign:TextAlign.start,
  259. ),
  260. ),
  261. ],
  262. )
  263. )
  264. )
  265. ]
  266. ),
  267. )
  268. ),
  269. ],
  270. ),
  271. );
  272. }
  273. }