comment.dart 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  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. void dispose() {
  55. // provider.dispose();
  56. super.dispose();
  57. }
  58. @override
  59. Widget build(BuildContext context) {
  60. double width = MediaQuery.of(context).size.width;
  61. return
  62. // Center(child:new Text("个人中心"));
  63. ChangeNotifierProvider<UserProvider>(
  64. create: (_) => provider,
  65. child:
  66. Scaffold(
  67. appBar: MyAppBar(
  68. centerTitle: "评价本次服务",
  69. ),
  70. body: Consumer<UserProvider>(builder: (_, provider, __) {
  71. return Stack(
  72. children:<Widget>[
  73. ListView(padding: EdgeInsets.all(0.0), children: <Widget>[
  74. UserDetail(obj: obj,),
  75. Container(
  76. color: Color(0xffFAF7FA),
  77. height: ScreenUtil().setWidth(5),
  78. ),
  79. Container(
  80. padding: EdgeInsets.only(left:ScreenUtil().setWidth(15),top:ScreenUtil().setWidth(15),bottom:ScreenUtil().setWidth(15)),
  81. child: Text(
  82. '您对专家的服务满意吗?',
  83. style: TextStyle(
  84. color:Color(0xff333333),
  85. fontSize:ScreenUtil().setSp(16)
  86. ),
  87. textAlign:TextAlign.start,
  88. ),
  89. ),
  90. Container(
  91. child:Column(
  92. children:<Widget>[
  93. StarItem(
  94. title: "技术水平:",
  95. starRating: serviceLevel,
  96. onRatingChanged: (res){
  97. serviceLevel = res;
  98. setState(() {
  99. });
  100. },
  101. ),
  102. StarItem(
  103. title: "服务态度:",
  104. starRating: serviceTaidu,
  105. onRatingChanged: (res){
  106. serviceTaidu = res;
  107. setState(() {
  108. });
  109. },
  110. ),
  111. StarItem(
  112. title: "响应速度:",
  113. starRating: speed,
  114. onRatingChanged: (res){
  115. speed = res;
  116. setState(() {
  117. });
  118. },
  119. ),
  120. SizedBox(
  121. height: 8,
  122. ),
  123. Container(
  124. decoration: BoxDecoration(
  125. border: Border.all(
  126. width:0.5,
  127. color:Color(0xffcccccc)
  128. ),
  129. color: Colors.white,
  130. ),
  131. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(15)),
  132. child: Padding(
  133. padding: const EdgeInsets.only(
  134. top: 5, left: 15.0, right: 15.0, bottom: 8.0),
  135. child: TextField(
  136. // maxLength: 100,
  137. maxLines: 5,
  138. autofocus: false,
  139. controller: _controller,
  140. // keyboardType: widget.keyboardType,
  141. //style: TextStyles.textDark14,
  142. decoration: InputDecoration(
  143. hintText: "您的满意是对专家最大的支持和鼓励",
  144. border: InputBorder.none,
  145. hintStyle: TextStyles.textGray14)),
  146. ),
  147. ),
  148. ]
  149. )
  150. )
  151. ]),
  152. Positioned(
  153. bottom:0,
  154. left:0,
  155. child:Row(
  156. children:<Widget>[
  157. Container(
  158. height:ScreenUtil().setWidth(44),
  159. decoration: BoxDecoration(
  160. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)),
  161. gradient: const LinearGradient(
  162. colors: [Color(0xFF00D9FF), Color(0xFF0287FF)]),
  163. ),
  164. margin: EdgeInsets.all(ScreenUtil().setWidth(20)),
  165. width: width*0.9,
  166. child: FlatButton(
  167. // padding: EdgeInsets.all(15.0),
  168. child: Text("提交"),
  169. // color: Theme
  170. // .of(context)
  171. // .primaryColor,
  172. textColor: Colors.white,
  173. onPressed: () {
  174. NavigatorUtils.push(context,WodeRouter.orderPage);
  175. },
  176. ),
  177. )
  178. ]
  179. )
  180. )
  181. ]
  182. );
  183. })));
  184. }
  185. @override
  186. bool get wantKeepAlive => true;
  187. }
  188. class UserDetail extends StatelessWidget {
  189. UserDetail({Key key,this.obj}) : super(key: key);
  190. Map<String,String>obj;
  191. @override
  192. Widget build(BuildContext context) {
  193. return Container(
  194. // height: 20,
  195. padding:EdgeInsets.only(bottom:ScreenUtil().setWidth(20),top:ScreenUtil().setWidth(10)),
  196. child: Row(
  197. crossAxisAlignment: CrossAxisAlignment.start,
  198. children: <Widget>[
  199. Expanded(
  200. child: GestureDetector(
  201. onTap: (){
  202. NavigatorUtils.push(context, WodeRouter.orderDetail);
  203. },
  204. child:Row(
  205. crossAxisAlignment: CrossAxisAlignment.start,
  206. children:<Widget>[
  207. Container(
  208. margin: EdgeInsets.only(left:ScreenUtil().setWidth(15),right:ScreenUtil().setWidth(10),top:ScreenUtil().setWidth(5)),
  209. decoration: BoxDecoration(
  210. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(25)),
  211. ),
  212. child: LoadAssetImage(
  213. // image: AssetImage(i['img']),
  214. obj["pic"],
  215. width: ScreenUtil().setWidth(43),
  216. height:ScreenUtil().setWidth(43),
  217. // alignment: Alignment.centerLeft,
  218. ),
  219. ),
  220. Expanded(
  221. child: Container(
  222. padding: EdgeInsets.only(right:ScreenUtil().setWidth(15)),
  223. child:Column(
  224. children: <Widget>[
  225. Container(
  226. child:Row(
  227. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  228. children:<Widget>[
  229. Row(
  230. crossAxisAlignment: CrossAxisAlignment.center,
  231. children:<Widget>[
  232. Text(
  233. obj["name"],
  234. style: TextStyle(
  235. color:Color(0xff333333),
  236. fontSize:ScreenUtil().setSp(18)
  237. ),
  238. textAlign:TextAlign.start,
  239. ),
  240. Container(
  241. padding: EdgeInsets.only(left:5),
  242. child:Text(
  243. obj["brand"],
  244. style: TextStyle(
  245. color:Color(0xff666666),
  246. fontSize:ScreenUtil().setSp(14)
  247. ),
  248. textAlign:TextAlign.start,
  249. ),
  250. )
  251. ]
  252. ),
  253. ]
  254. )
  255. ),
  256. Align(
  257. child:Text(
  258. obj["desc"],
  259. style: TextStyle(
  260. color:Color(0xff999999),
  261. fontSize:ScreenUtil().setSp(14)
  262. ),
  263. textAlign:TextAlign.start,
  264. ),
  265. ),
  266. ],
  267. )
  268. )
  269. )
  270. ]
  271. ),
  272. )
  273. ),
  274. ],
  275. ),
  276. );
  277. }
  278. }