hospital_page.dart 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/common/common.dart';
  4. import 'package:liftmanager/internal/hospital/hospital_roter.dart';
  5. import 'package:liftmanager/internal/hospital/model/article_item.dart';
  6. import 'package:liftmanager/res/resources.dart';
  7. import 'package:liftmanager/routers/fluro_navigator.dart';
  8. import 'package:liftmanager/utils/image_utils.dart';
  9. import 'package:liftmanager/utils/theme_utils.dart';
  10. import 'package:liftmanager/widgets/app_bar.dart';
  11. import 'package:liftmanager/widgets/load_image.dart';
  12. import 'package:umeng_common_sdk/umeng_common_sdk.dart';
  13. import 'package:flustars/flustars.dart' as FlutterStars;
  14. class HospitalPage extends StatefulWidget {
  15. @override
  16. State<StatefulWidget> createState() {
  17. return HospitalPageState();
  18. }
  19. }
  20. class HospitalPageState extends State<HospitalPage> {
  21. List<ArticleItem> list = [
  22. ArticleItem(
  23. title: "[三菱]电梯常见故障有哪些?",
  24. content:
  25. "1、闭合底层钥匙开关,激战不能开门离开的肌肤轮廓的肌肤抵抗封疆大吏剪六爹上看风景来上课的肌肤来上课的肌肤离开时的肌肤离开时交电费离开时交电费了科技的身份",
  26. author: Author(
  27. name: "阮英",
  28. avatar:
  29. "https://dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1305353222,2352820043&fm=26&gp=0.jpg"),
  30. images: [],
  31. createdAt: "2020-02-20",
  32. like: 13),
  33. ArticleItem(
  34. title: "[三菱]电梯不能正常开门是什么原因?",
  35. content:
  36. "1、闭合底层钥匙开关,激战不能开门离开的肌肤轮廓的肌肤抵抗封疆大吏剪六爹上看风景来上课的肌肤来上课的肌肤离开时的肌肤离开时交电费离开时交电费了科技的身份",
  37. author: Author(
  38. name: "彭强强",
  39. avatar:
  40. "https://dss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2471723103,4261647594&fm=26&gp=0.jpg"),
  41. images: [
  42. ArticleImg(
  43. url:
  44. "http://img3.99114.com/group10/M00/2F/52/rBADslmH99WAZvgiAABvnSElCFg396.jpg"),
  45. ArticleImg(
  46. url:
  47. "http://img1.99114.com/group10/M00/F1/F0/rBADs1mDTaCAXoGYAABOcC-l-IQ457.jpg"),
  48. ArticleImg(
  49. url:
  50. "http://img1.99114.com/group10/M00/9D/87/rBADs1ofk1GABugKAAArg-CFe1A183.jpg")
  51. ],
  52. createdAt: "2020-02-20",
  53. like: 145)
  54. ];
  55. @override
  56. Widget build(BuildContext context) {
  57. return WillPopScope(
  58. onWillPop: () {
  59. NavigatorUtils.goBackWithParams(context, true);
  60. return Future.value(false);
  61. },
  62. child: Scaffold(
  63. appBar: MyAppBar(
  64. centerTitle: "电梯医院",
  65. isBack: false,
  66. ),
  67. body: Container(
  68. color: ThemeUtils.getBackgroundColor(context),
  69. child: Column(
  70. crossAxisAlignment: CrossAxisAlignment.start,
  71. children: <Widget>[
  72. Container(
  73. padding: EdgeInsets.all(15),
  74. color: ThemeUtils.getTabsBg(context),
  75. child: Column(
  76. children: <Widget>[
  77. GestureDetector(
  78. onTap: () {
  79. NavigatorUtils.push(
  80. context, HospitalRouter.hospitalDetailPage);
  81. },
  82. child: Row(
  83. children: <Widget>[
  84. CircleAvatar(
  85. radius: 21.5,
  86. backgroundColor: Colors.transparent,
  87. backgroundImage:
  88. ImageUtils.getImageProvider(null)),
  89. Gaps.hGap10,
  90. Expanded(
  91. child: Column(
  92. mainAxisAlignment: MainAxisAlignment.center,
  93. crossAxisAlignment: CrossAxisAlignment.start,
  94. children: <Widget>[
  95. Row(
  96. children: <Widget>[
  97. Text(
  98. "快速问诊",
  99. style: TextStyles.textBold24,
  100. ),
  101. ],
  102. ),
  103. Text(
  104. "搜电梯品牌 找专家咨询电梯疑问",
  105. style: TextStyles.textGray13,
  106. )
  107. ],
  108. ),
  109. ),
  110. ],
  111. )),
  112. Gaps.vGap12,
  113. Row(
  114. children: <Widget>[
  115. CircleAvatar(
  116. radius: 21.5,
  117. backgroundColor: Colors.transparent,
  118. backgroundImage:
  119. ImageUtils.getImageProvider(null)),
  120. Gaps.hGap10,
  121. Expanded(
  122. child: Column(
  123. mainAxisAlignment: MainAxisAlignment.center,
  124. crossAxisAlignment: CrossAxisAlignment.start,
  125. children: <Widget>[
  126. Row(
  127. children: <Widget>[
  128. Text(
  129. "出诊",
  130. style: TextStyles.textBold24,
  131. ),
  132. // Gaps.hGap10,
  133. // Container(
  134. // decoration: BoxDecoration(
  135. // color: Colours.app_main,
  136. // borderRadius: BorderRadius.circular(6.0),
  137. // ),
  138. // padding: EdgeInsets.fromLTRB(5, 0, 5, 0),
  139. // child: Text("",style: TextStyle(fontSize: 12,color: Colors.white),),
  140. // )
  141. ],
  142. ),
  143. Text(
  144. "在线预约专家上门维修服务",
  145. style: TextStyles.textGray13,
  146. )
  147. ],
  148. ),
  149. ),
  150. ],
  151. )
  152. ],
  153. ),
  154. ),
  155. Gaps.vGap10,
  156. Container(
  157. height: 45,
  158. padding: EdgeInsets.only(left: 15, right: 15),
  159. alignment: Alignment.centerLeft,
  160. decoration: BoxDecoration(
  161. color: ThemeUtils.getTabsBg(context),
  162. border: Border(
  163. bottom: BorderSide(width: 0.5, color: Colours.line),
  164. ),
  165. ),
  166. child: Row(
  167. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  168. children: <Widget>[
  169. Container(
  170. padding: EdgeInsets.only(left: 10),
  171. decoration: BoxDecoration(
  172. border: Border(
  173. left: BorderSide(width: 3, color: Colours.app_main),
  174. )),
  175. child: Text(
  176. "热门问题",
  177. style: TextStyles.textBold15,
  178. ),
  179. ),
  180. ],
  181. ),
  182. ),
  183. Expanded(
  184. flex: 1,
  185. child: ListView.separated(
  186. itemBuilder: (_, index) {
  187. var item = list[index];
  188. bool isDark = ThemeUtils.isDark(context);
  189. return InkWell(
  190. onTap: () {
  191. // NavigatorUtils.push(context,
  192. // "${NewsRouter.newsDetail}?id=${item.id}");
  193. },
  194. child: Container(
  195. decoration: BoxDecoration(
  196. color: ThemeUtils.getTabsBg(context),
  197. border: Border(
  198. bottom: BorderSide(
  199. width: 0.5, color: Colours.line)),
  200. ),
  201. padding: const EdgeInsets.all(15),
  202. child: Column(
  203. crossAxisAlignment: CrossAxisAlignment.start,
  204. mainAxisAlignment: MainAxisAlignment.start,
  205. children: <Widget>[
  206. Text(
  207. "${item.title}",
  208. style: TextStyle(
  209. fontSize: 15,
  210. color: isDark
  211. ? Colours.dark_text
  212. : Colours.text),
  213. // overflow: TextOverflow.ellipsis,
  214. ),
  215. Gaps.vGap12,
  216. Text(
  217. "${item.content}",
  218. style: TextStyles.textGray13,
  219. // overflow: TextOverflow.ellipsis,
  220. ),
  221. Offstage(
  222. offstage: list[index].images.length == 0,
  223. child: Gaps.vGap12,
  224. ),
  225. Offstage(
  226. offstage: list[index].images.length == 0,
  227. child: Container(
  228. color: ThemeUtils.getTabsBg(context),
  229. child: _ToolsItem(list[index].images,
  230. (index) {
  231. if (index == 0) {
  232. // NavigatorUtils.push(context, AccountRouter.certificatePage);
  233. } else if (index == 1) {
  234. // NavigatorUtils.push(context, TeamRouter.teamUserPage);
  235. }
  236. }),
  237. ),
  238. ),
  239. Gaps.vGap12,
  240. Text(
  241. "${item.author.name}·阅读${item.like}次",
  242. style: TextStyle(
  243. fontSize: 11, color: Colours.text_gray),
  244. )
  245. ],
  246. ),
  247. ),
  248. );
  249. },
  250. separatorBuilder: (BuildContext context, int index) {
  251. return Container(
  252. height: 0.5,
  253. color: Color(0xFFF5F5F5),
  254. );
  255. },
  256. itemCount: list.length))
  257. ],
  258. ),
  259. ),
  260. ));
  261. }
  262. }
  263. class _ToolsItem extends StatelessWidget {
  264. _ToolsItem(this.imgs, this.onTap, {Key key}) : super(key: key);
  265. List<ArticleImg> imgs;
  266. Function onTap;
  267. @override
  268. Widget build(BuildContext context) {
  269. return GridView.builder(
  270. shrinkWrap: true,
  271. padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 12.0),
  272. physics: NeverScrollableScrollPhysics(),
  273. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  274. crossAxisCount: 4, childAspectRatio: 0.9, crossAxisSpacing: 2),
  275. itemCount: imgs.length,
  276. itemBuilder: (_, index) {
  277. return InkWell(
  278. child: Column(
  279. mainAxisAlignment: MainAxisAlignment.center,
  280. children: <Widget>[
  281. LoadImage(
  282. "${imgs[index].url}",
  283. width: 80.0,
  284. height: 80,
  285. ),
  286. ],
  287. ),
  288. onTap: () {
  289. onTap(index);
  290. });
  291. },
  292. );
  293. }
  294. }