From aea6451cec09afe6b4a0f3aceafe981e7d928af2 Mon Sep 17 00:00:00 2001 From: fmk Date: Mon, 25 Oct 2021 19:02:14 +0800 Subject: [PATCH] safety --- lib/community/community_details.dart | 165 +++++++-------------------- lib/web/web_page.dart | 5 +- lib/web/web_view/comment_list.dart | 15 ++- 3 files changed, 49 insertions(+), 136 deletions(-) diff --git a/lib/community/community_details.dart b/lib/community/community_details.dart index f39399e9..14dfe556 100644 --- a/lib/community/community_details.dart +++ b/lib/community/community_details.dart @@ -32,8 +32,7 @@ class CommunityDetails extends StatefulWidget { } } -class _CommunityDetails extends State - with WidgetsBindingObserver { +class _CommunityDetails extends State with WidgetsBindingObserver { double height = 0; double commentHeight = 60.h; ComunityComment comunity; @@ -54,7 +53,10 @@ class _CommunityDetails extends State void didChangeMetrics() { WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted) return; - if (MediaQuery.of(context).viewInsets.bottom == 0) { + if (MediaQuery + .of(context) + .viewInsets + .bottom == 0) { if (isKeyBoardShow) { FocusScope.of(context).requestFocus(FocusNode()); if (mounted) @@ -91,8 +93,10 @@ class _CommunityDetails extends State context: context, token: value.getString("token"), ); - BaseData
baseData = - await apiService.informationInfo(comunity.id).catchError((onError) {}); + BaseData
baseData = await apiService.informationInfo(comunity.id) + .catchError((onError) { + debugPrint(onError); + }); if (baseData != null && baseData.isSuccess) {} } @@ -125,75 +129,24 @@ class _CommunityDetails extends State isDetails: true, heightFun: (height) { this.height = height + - MediaQuery.of(context).padding.top + + MediaQuery + .of(context) + .padding + .top + kToolbarHeight + 24; if (mounted) setState(() {}); }, ), - // CommentList( - // commentKey, - // widget.arguments, - // activity, - // article, - // isKeyBoardShow, - // _reply, - // _delCommentTips, - // 12.sp, - // ) - Container( - padding: EdgeInsets.all(16), - color: Colors.white, - child: Row( - children: [ - Text( - S.of(context).pinglun_(commentTotal.toString()), - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Color(0xff1A1A1A), - ), - ), - SizedBox( - width: 16.w, - ), - Text( - S.of(context).xihuan_( - "${comunity?.likes ?? comunity?.likes ?? "0"}"), - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Color(0xff1A1A1A), - ), - ), - ], - ), + CommentList( + commentKey, + "${comunity?.likes ?? comunity?.likes ?? "0"}", + comunity.id, + isKeyBoardShow, + _reply, + _delCommentTips, + 12.sp, ), - if (memberList != null && memberList.length > 0) - ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: memberList != null ? memberList.length : 0, - scrollDirection: Axis.vertical, - itemBuilder: (context, position) { - return Material( - color: Colors.white, - child: InkWell( - onTap: () { - showPressMenu( - memberList[position].createUser, - memberList[position], - ); - }, - child: CommunityComment( - memberList[position], - _queryCommentLike, - (memberList.length - 1 == position) ? 1 : 0, - ), - ), - ); - }, - ), if (memberList == null || memberList.length == 0) Container( width: double.infinity, @@ -201,7 +154,9 @@ class _CommunityDetails extends State margin: EdgeInsets.only(top: 40), padding: EdgeInsets.all(22.h), child: Text( - S.of(context).zanwupinglun, + S + .of(context) + .zanwupinglun, style: TextStyle( fontSize: 12, fontWeight: FontWeight.bold, @@ -237,7 +192,7 @@ class _CommunityDetails extends State _queryInformationLikes() async { BaseData baseData = await apiService.informationLikes(comunity.id); if (baseData != null && baseData.isSuccess) { - // commentKey.currentState.setState(() {}); + commentKey.currentState.setState(() {}); setState(() { if (comunity.selfLike ?? false) comunity.likes -= 1; @@ -259,7 +214,7 @@ class _CommunityDetails extends State "relationalType": 1 }).catchError((error) {}); if (baseData != null && baseData.isSuccess) { - // commentKey.currentState.initState(); + commentKey.currentState.initState(); commentTextController.text = ""; FocusScope.of(context).unfocus(); _queryMemberCommentList(); @@ -274,7 +229,10 @@ class _CommunityDetails extends State scrollController.animateTo( first.dy + scrollController.offset - - (kToolbarHeight + MediaQuery.of(context).padding.top), + (kToolbarHeight + MediaQuery + .of(context) + .padding + .top), duration: Duration(milliseconds: 300), curve: Curves.easeIn, ); @@ -284,40 +242,21 @@ class _CommunityDetails extends State final TextEditingController commentTextController = TextEditingController(); contentHeight() { - double contentHeight = MediaQuery.of(context).size.height - + double contentHeight = MediaQuery + .of(context) + .size + .height - kToolbarHeight - - MediaQuery.of(context).padding.top - + MediaQuery + .of(context) + .padding + .top - 160.h; if ((contentHeight - 60.h) > (128.h * memberList.length)) { commentHeight = contentHeight - (128.h * memberList.length); } } - showPressMenu(String userId, memberComment) { - if (isKeyBoardShow) { - FocusScope.of(context).requestFocus(FocusNode()); - return; - } - SharedPreferences.getInstance().then((value) { - SmartDialog.show( - widget: CommentMenu( - (type) { - SmartDialog.dismiss(); - if (type == "huifu") { - _reply(memberComment); - } else if (type == "shanchu") { - _delCommentTips(); - } - }, - isSelf: userId == value.getString("userId"), - ), - alignmentTemp: Alignment.bottomCenter, - isUseAnimationTemp: true, - animationDurationTemp: Duration(milliseconds: 300), - ); - }); - } - ///删除评论的提示 _delCommentTips() { SmartDialog.show(widget: Tips(() { @@ -329,7 +268,7 @@ class _CommunityDetails extends State delComment() async { BaseData baseData = await apiService.delComment(""); if (baseData != null && baseData.isSuccess) { - // commentKey.currentState.initState(); + commentKey.currentState.initState(); } } @@ -340,30 +279,6 @@ class _CommunityDetails extends State hintText = S.of(context).huifu_("${memberComment.username}"); } - ///评论点赞 - _queryCommentLike(String id) async { - SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); - String token = sharedPreferences.getString("token"); - if (token == null || token == "") { - LoginTipsDialog().show(context); - return; - } - BaseData baseData = await apiService.commentLike(id).catchError((error) {}); - if (baseData != null && baseData.isSuccess) { - memberList.forEach((element) { - if (element.id == id) { - if (element.liked) { - element.likes -= 1; - element.liked = false; - } else { - element.likes += 1; - element.liked = true; - } - } - }); - } - } - ///评论列表 _queryMemberCommentList() async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); @@ -375,7 +290,7 @@ class _CommunityDetails extends State showLoading: false, ); BaseData> baseData = - await apiService.memberCommentList({ + await apiService.memberCommentList({ "pageNum": 1, "pageSize": 100, "relationalId": comunity.id, diff --git a/lib/web/web_page.dart b/lib/web/web_page.dart index 50808716..c5fc53be 100644 --- a/lib/web/web_page.dart +++ b/lib/web/web_page.dart @@ -271,9 +271,8 @@ class _WebPage extends State with WidgetsBindingObserver { /// 富文本的评论 CommentList( commentKey, - widget.arguments, - activity, - article, + article?.likes ?? activity?.likes ?? "0", + article?.id ?? activity?.id, isKeyBoardShow, _reply, _delCommentTips, diff --git a/lib/web/web_view/comment_list.dart b/lib/web/web_view/comment_list.dart index 69a27904..db3c4c80 100644 --- a/lib/web/web_view/comment_list.dart +++ b/lib/web/web_view/comment_list.dart @@ -16,15 +16,15 @@ import 'package:like_button/like_button.dart'; import 'package:shared_preferences/shared_preferences.dart'; class CommentList extends StatefulWidget { - final Map arguments; - final Activity activity; - final Article article; + final bool isKeyBoardShow; final Function reply; final Function delCommentTips; final double fontSize; + final String relationalId; + final String like; - CommentList(Key key, this.arguments, this.activity, this.article, + CommentList(Key key, this.like, this.relationalId, this.isKeyBoardShow, this.reply, this.delCommentTips, this.fontSize) : super(key: key); @@ -57,6 +57,7 @@ class CommentListState extends State { } else { element.likes += 1; element.liked = true; + } } }); @@ -105,8 +106,7 @@ class CommentListState extends State { width: 16.w, ), Text( - S.of(context).xihuan_( - "${widget.article?.likes ?? widget.activity?.likes ?? "0"}"), + S.of(context).xihuan_("${widget.like ?? "0"}"), style: TextStyle( fontSize: widget.fontSize + 4, fontWeight: FontWeight.bold, @@ -209,8 +209,7 @@ class CommentListState extends State { await apiService.memberCommentList({ "pageNum": 1, "pageSize": 100, - "relationalId": - widget.arguments["activityId"] ?? widget.arguments["articleId"], + "relationalId": widget.relationalId, "relationalType": 1, }).catchError((error) {}); if (baseData != null && baseData.isSuccess) {