news_detail_page.dart 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/internal/bbs/model/news_detail_item.dart';
  4. import 'package:liftmanager/net/api_service.dart';
  5. import 'package:liftmanager/res/colors.dart';
  6. import 'package:liftmanager/res/gaps.dart';
  7. import 'package:liftmanager/utils/theme_utils.dart';
  8. import 'package:liftmanager/utils/toast.dart';
  9. import 'package:liftmanager/widgets/app_bar.dart';
  10. import 'package:flutter_html/flutter_html.dart';
  11. import 'package:liftmanager/widgets/load_image.dart';
  12. import 'dart:convert';
  13. import 'package:flustars/flustars.dart' as FlutterStars;
  14. import 'package:liftmanager/common/common.dart';
  15. import 'package:liftmanager/internal/account/account_router.dart';
  16. import 'package:liftmanager/routers/fluro_navigator.dart';
  17. class NewsDetailPage extends StatefulWidget {
  18. NewsDetailPage(this.id);
  19. final String id;
  20. @override
  21. State<StatefulWidget> createState() {
  22. return NewsDetailPageState();
  23. }
  24. }
  25. class NewsDetailPageState extends State<NewsDetailPage> {
  26. NewsDetailItem item = NewsDetailItem();
  27. @override
  28. void initState() {
  29. super.initState();
  30. getNewsDetail();
  31. }
  32. getNewsDetail() {
  33. ApiService().newsDetail(widget.id, onSuccess: (res) {
  34. print(JsonEncoder().convert(res));
  35. item = res;
  36. setState(() {});
  37. }, onError: (code, msg) {
  38. toasts(msg);
  39. });
  40. }
  41. zanClick(){
  42. ApiService(context: context).newsZan(widget.id,onSuccess: (res){
  43. item.isLike =true;
  44. item.likeNum ="${int.parse(item.likeNum)+1}";
  45. setState(() {
  46. });
  47. },onError: (code,msg){
  48. toasts(msg);
  49. });
  50. }
  51. @override
  52. Widget build(BuildContext context) {
  53. return Scaffold(
  54. appBar: MyAppBar(
  55. centerTitle: "新闻详情",
  56. ),
  57. body: SafeArea(
  58. child: item.id.length == 0
  59. ? Container()
  60. : ListView(
  61. padding: EdgeInsets.fromLTRB(15, 18, 15, 18),
  62. // mainAxisAlignment: MainAxisAlignment.start,
  63. // crossAxisAlignment: CrossAxisAlignment.start,
  64. children: <Widget>[
  65. Text(
  66. "${item.title}",
  67. style: TextStyle(
  68. fontSize: 15,
  69. // color: Colours.text,
  70. fontWeight: FontWeight.w500),
  71. ),
  72. Container(
  73. padding: EdgeInsets.only(top: 10, bottom: 10),
  74. child: Row(
  75. children: <Widget>[
  76. Text(
  77. "${item.releaseDate}",
  78. style: TextStyle(
  79. fontSize: 11, color: Color(0xFF999999)),
  80. ),
  81. Gaps.hGap10,
  82. Text(
  83. "@${item.releaseUser}",
  84. style: TextStyle(
  85. fontSize: 11, color: Color(0xFF999999)),
  86. ),
  87. ],
  88. ),
  89. ),
  90. Html(
  91. data: item.content,
  92. ),
  93. Row(
  94. children: <Widget>[
  95. Text(
  96. "阅读${item.lookNum}次·点赞${item.likeNum}",
  97. style:
  98. TextStyle(fontSize: 11, color: Colours.text_gray),
  99. ),
  100. ],
  101. ),
  102. Gaps.vGap15,
  103. Center(
  104. child:GestureDetector(
  105. onTap: (){
  106. if(FlutterStars.SpUtil.getString(Constant.userId) == "-1"){
  107. toasts("请登录");
  108. NavigatorUtils.push(context, AccountRouter.loginPage, clearStack: true);
  109. }else {
  110. zanClick();}
  111. },
  112. child: Column(
  113. children: <Widget>[
  114. LoadAssetImage(
  115. "news/${item.isLike?'zan_yes':'zan_no'}",
  116. width: 45.0,
  117. height: 45,
  118. ),
  119. Text("${item.isLike?'已赞':'点赞'}")
  120. ],
  121. ),
  122. ) ,
  123. )
  124. ],
  125. )),
  126. );
  127. }
  128. }