diff --git a/assets/image/2x/dynamic.png b/assets/image/2x/dynamic.png new file mode 100644 index 00000000..ce532f0d Binary files /dev/null and b/assets/image/2x/dynamic.png differ diff --git a/assets/image/3x/dynamic.png b/assets/image/3x/dynamic.png new file mode 100644 index 00000000..5676c4ad Binary files /dev/null and b/assets/image/3x/dynamic.png differ diff --git a/assets/image/dynamic.png b/assets/image/dynamic.png new file mode 100644 index 00000000..51a01057 Binary files /dev/null and b/assets/image/dynamic.png differ diff --git a/lib/community/community_child_page.dart b/lib/community/community_child_page.dart index db8e8666..479b5e9e 100644 --- a/lib/community/community_child_page.dart +++ b/lib/community/community_child_page.dart @@ -40,6 +40,7 @@ class _CommunityChildPage extends State { setState(() {}); } + ///动态列表 queryCommunity() async { if (apiService == null) { SharedPreferences value = await SharedPreferences.getInstance(); diff --git a/lib/community/community_details.dart b/lib/community/community_details.dart index 705705d0..467ef9b0 100644 --- a/lib/community/community_details.dart +++ b/lib/community/community_details.dart @@ -5,6 +5,8 @@ import 'package:huixiang/community/community_view/community_comment.dart'; import 'package:huixiang/community/community_view/community_dynamic.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:huixiang/retrofit/data/activity.dart'; +import 'package:huixiang/retrofit/data/article.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/comunity_comment.dart'; import 'package:huixiang/retrofit/data/member_comment_list.dart'; @@ -14,6 +16,7 @@ import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/comment_menu.dart'; import 'package:huixiang/view_widget/login_tips_dialog.dart'; import 'package:huixiang/view_widget/tips_dialog.dart'; +import 'package:huixiang/web/web_view/comment_list.dart'; import 'package:huixiang/web/web_view/input_comment.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -43,8 +46,9 @@ class _CommunityDetails extends State String hintText = S.current.liuxianinjingcaidepinglunba; bool isKeyBoardShow = false; - int commentTotal = 0; + Article article; + @override void didChangeMetrics() { @@ -73,13 +77,20 @@ class _CommunityDetails extends State WidgetsBinding.instance.addObserver(this); _queryMemberCommentList(); - SharedPreferences.getInstance().then((value) { - apiService = ApiService( - Dio(), - context: context, - token: value.getString("token"), - ); - }); + queryDetails(); + } + + ///详情接口 + queryDetails() async { + SharedPreferences value = await SharedPreferences.getInstance(); + if (apiService == null) + apiService = + ApiService(Dio(), context: context, token: value.getString("token")); + BaseData
baseData = await apiService + .informationInfo(comunity.id) + .catchError((onError) {}); + if (baseData != null && baseData.isSuccess) { + } } @override @@ -280,7 +291,8 @@ class _CommunityDetails extends State if (baseData != null && baseData.isSuccess) { // commentKey.currentState.initState(); commentTextController.text = ""; - _toComment(); + FocusScope.of(context).unfocus(); + _queryMemberCommentList(); } } diff --git a/lib/community/community_view/community_dynamic.dart b/lib/community/community_view/community_dynamic.dart index 4aa3aa15..87742550 100644 --- a/lib/community/community_view/community_dynamic.dart +++ b/lib/community/community_view/community_dynamic.dart @@ -5,6 +5,7 @@ import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/comunity_comment.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/font_weight.dart'; +import 'package:huixiang/view_widget/border_text.dart'; import 'package:huixiang/view_widget/custom_image.dart'; import 'package:huixiang/view_widget/icon_text.dart'; import 'package:huixiang/view_widget/round_button.dart'; @@ -16,16 +17,18 @@ class CommunityDynamic extends StatefulWidget { final Function(double height) heightFun; final bool isDetails; final int commentType; + final Function removalDynamic; final ComunityComment comment; CommunityDynamic( this.comment, - this.commentType,{ + this.commentType, { Key key, this.itemCount = 9, this.heightFun, this.isDetails = false, + this.removalDynamic, }) : super(key: key); @override @@ -33,6 +36,7 @@ class CommunityDynamic extends StatefulWidget { return _CommunityDynamic(); } } + class _CommunityDynamic extends State { GlobalKey globalKey = GlobalKey(); double height = 0; @@ -42,16 +46,29 @@ class _CommunityDynamic extends State { void initState() { super.initState(); SharedPreferences.getInstance().then((value) => { - apiService = ApiService(Dio(), - context: context, token: value.getString('token')), - }); + apiService = ApiService(Dio(), + context: context, token: value.getString('token')), + }); } ///关注/取关会员 _vipFollow(followId) async { BaseData baseData = await apiService.follow(followId); if (baseData != null && baseData.isSuccess) { - SmartDialog.showToast("关注成功"); + SmartDialog.showToast("关注成功", alignment: Alignment.center); + } else { + SmartDialog.showToast(baseData.msg, alignment: Alignment.center); + } + } + + ///删除动态 + _deleteDynamic(id) async { + BaseData baseData = await apiService.deleteTrend(id); + if (baseData != null && baseData.isSuccess) { + SmartDialog.showToast("删除成功", alignment: Alignment.center); + + } else { + SmartDialog.showToast(baseData.msg, alignment: Alignment.center); } } @@ -60,6 +77,7 @@ class _CommunityDynamic extends State { return Column( children: [ Container( + margin: EdgeInsets.only(top: 2), key: globalKey, alignment: Alignment.topCenter, padding: EdgeInsets.all(16), @@ -88,7 +106,9 @@ class _CommunityDynamic extends State { child: Row( children: [ MImage( - widget.comment != null ? widget.comment.memberInfo.avatar : "", + widget.comment != null + ? widget.comment.memberInfo.avatar + : "", width: 44, height: 44, isCircle: true, @@ -104,7 +124,9 @@ class _CommunityDynamic extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - widget.comment != null ? widget.comment.memberInfo.nickname : "", + widget.comment != null + ? widget.comment.memberInfo.nickname + : "", style: TextStyle( fontSize: 14.sp, fontWeight: MyFontWeight.medium, @@ -112,7 +134,9 @@ class _CommunityDynamic extends State { ), ), Text( - widget.comment != null ? widget.comment.createTime : "", + widget.comment != null + ? widget.comment.createTime + : "", style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.regular, @@ -125,35 +149,48 @@ class _CommunityDynamic extends State { ), ), GestureDetector( - onTap: (){ + onTap: () { setState(() { - if(widget.commentType == 0){ - widget.comment.selfFollow = !(widget.comment.selfFollow??false); + if (widget.commentType == 0) { + widget.comment.selfFollow = + !(widget.comment.selfFollow ?? false); _vipFollow(widget.comment.memberInfo.mid); - }else{ - SmartDialog.showToast("删除成功", alignment: Alignment.center); + } else { + showDeleteDialog(); } }); }, - child: (widget.commentType == 0)?RoundButton( - padding: EdgeInsets.symmetric( - horizontal: 8, - vertical: 3, - ), - backgroup: (widget.comment.selfFollow??false) ? Color(0xFFE6E6E6) : Color(0xFF32A060), - textColor: (widget.comment.selfFollow??false) ? Color(0xFF808080):Colors.white , - text:(widget.comment.selfFollow??false) ? "已关注":"关注", - radius: 20, - icons: Icon( - (widget.comment.selfFollow??false) ? Icons.check: Icons.add, - color:(widget.comment.selfFollow??false) ? Color(0xFF808080):Colors.white , - size: 14, - ), - ):Icon( - Icons.close, - color:Colors.black, - size: 16, - ), + child: (widget.commentType == 0) + ? RoundButton( + padding: EdgeInsets.symmetric( + horizontal: 8, + vertical: 3, + ), + backgroup: (widget.comment.selfFollow ?? false) + ? Color(0xFFE6E6E6) + : Color(0xFF32A060), + textColor: (widget.comment.selfFollow ?? false) + ? Color(0xFF808080) + : Colors.white, + text: (widget.comment.selfFollow ?? false) + ? "已关注" + : "关注", + radius: 20, + icons: Icon( + (widget.comment.selfFollow ?? false) + ? Icons.check + : Icons.add, + color: (widget.comment.selfFollow ?? false) + ? Color(0xFF808080) + : Colors.white, + size: 14, + ), + ) + : Icon( + Icons.close, + color: Colors.black, + size: 16, + ), ), ], ), @@ -162,7 +199,7 @@ class _CommunityDynamic extends State { ), Text( widget.comment.subject ?? "", - maxLines: 5, + // maxLines: 5, overflow: TextOverflow.ellipsis, style: TextStyle( color: Color(0xFF1A1A1A), @@ -181,7 +218,10 @@ class _CommunityDynamic extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ IconText( - "${widget.comment.viewers ?? 0}", + (widget.comment != null) + ? "${widget.comment.viewers}" + : "", + // "${widget.comment.viewers ?? 0}", space: 4.w, leftImage: "assets/svg/liulanliang.svg", iconSize: 16, @@ -280,6 +320,81 @@ class _CommunityDynamic extends State { ); } + ///删除动态弹窗 + showDeleteDialog() { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Container( + width: MediaQuery.of(context).size.width - 84, + height: 110.h, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "确定要删除这条动态?", + style: TextStyle( + fontSize: 17.sp, + fontWeight: FontWeight.bold, + color: Colors.black, + ), + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + Expanded( + child: InkWell( + child: BorderText( + text: "取消", + textColor: Color(0xFF32A060), + fontSize: 16.sp, + fontWeight: FontWeight.bold, + borderColor: Color(0xFF32A060), + radius: 4, + padding: EdgeInsets.all(12), + borderWidth: 1, + ), + onTap: () { + Navigator.of(context).pop(); + }, + ), + flex: 1, + ), + SizedBox( + width: 16.w, + ), + Expanded( + child: InkWell( + child: RoundButton( + text: "确定", + textColor: Colors.white, + radius: 4, + padding: EdgeInsets.all(12), + backgroup: Color(0xFF32A060), + fontSize: 16.sp, + fontWeight: FontWeight.bold, + ), + onTap: () { + _deleteDynamic(widget.comment.id); + Navigator.of(context).pop(); + }, + ), + flex: 1, + ), + ], + ) + ], + ), + ), + ); + }, + ); + } + @override void didChangeDependencies() { if (widget.heightFun != null) diff --git a/lib/community/release_dynamic.dart b/lib/community/release_dynamic.dart index c2415051..19146dc1 100644 --- a/lib/community/release_dynamic.dart +++ b/lib/community/release_dynamic.dart @@ -30,6 +30,7 @@ class _ReleaseDynamic extends State { TextEditingController textEditingController = TextEditingController(); ApiService apiService; + @override void initState() { super.initState(); @@ -118,7 +119,7 @@ class _ReleaseDynamic extends State { releaseDynamic() async { String dynamicText = textEditingController.text; if (dynamicText == null || dynamicText == "") { - SmartDialog.showToast("请输入您此刻的想法!~"); + SmartDialog.showToast("请输入您此刻的想法!"); return; } EasyLoading.show(status: S.of(context).zhengzaijiazai); @@ -152,7 +153,7 @@ class _ReleaseDynamic extends State { EasyLoading.dismiss(); }); if (baseData.isSuccess) { - SmartDialog.showToast("发布成功!~"); + SmartDialog.showToast("发布成功!"); Future.delayed(Duration(seconds: 1), () { Navigator.of(context).pop(true); }); @@ -367,6 +368,7 @@ class _ReleaseDynamic extends State { ), child: TextField( controller: textEditingController, + maxLines:5, style: TextStyle( fontSize: 14.sp, fontWeight: MyFontWeight.medium, diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index f4f7651b..9e25969c 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -200,6 +200,7 @@ class MessageLookup extends MessageLookupByLibrary { "faxingshijian" : m4, "feishiwuduihuanma" : MessageLookupByLibrary.simpleMessage("非实物兑换吗"), "feishiwushangpin" : MessageLookupByLibrary.simpleMessage("非实物商品兑换后领取到卡包即可使用!"), + "fensi" : MessageLookupByLibrary.simpleMessage("粉丝"), "fenxiangdao" : MessageLookupByLibrary.simpleMessage("分享到"), "fenxiangyaoqing" : MessageLookupByLibrary.simpleMessage("也可以直接点击右上方的分享给到你想要邀请的人。"), "fenxiangzhiweixin" : MessageLookupByLibrary.simpleMessage("分享至微信"), @@ -218,6 +219,7 @@ class MessageLookup extends MessageLookupByLibrary { "guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"), "guanyu" : MessageLookupByLibrary.simpleMessage("关于"), "guanyuchuangshiren" : MessageLookupByLibrary.simpleMessage("关于创始人"), + "guanzhu" : MessageLookupByLibrary.simpleMessage("关注"), "guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"), "haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"), "haimeiyouyouhuiquankeyilingqu" : MessageLookupByLibrary.simpleMessage("还没有优惠券可以领取~"), @@ -491,6 +493,7 @@ class MessageLookup extends MessageLookupByLibrary { "wenzhang" : MessageLookupByLibrary.simpleMessage("文章"), "wenzhangxiangqing" : MessageLookupByLibrary.simpleMessage("文章详情"), "weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"), + "wodedongtai" : MessageLookupByLibrary.simpleMessage("我的动态"), "wodegongju" : MessageLookupByLibrary.simpleMessage("我的工具"), "wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"), "wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"), diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index d288ebf7..cfbea28d 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/lib/generated/intl/messages_zh_CN.dart @@ -200,6 +200,7 @@ class MessageLookup extends MessageLookupByLibrary { "faxingshijian" : m4, "feishiwuduihuanma" : MessageLookupByLibrary.simpleMessage("非实物兑换吗"), "feishiwushangpin" : MessageLookupByLibrary.simpleMessage("非实物商品兑换后领取到卡包即可使用!"), + "fensi" : MessageLookupByLibrary.simpleMessage("粉丝"), "fenxiangdao" : MessageLookupByLibrary.simpleMessage("分享到"), "fenxiangyaoqing" : MessageLookupByLibrary.simpleMessage("也可以直接点击右上方的分享给到你想要邀请的人。"), "fenxiangzhiweixin" : MessageLookupByLibrary.simpleMessage("分享至微信"), @@ -217,6 +218,7 @@ class MessageLookup extends MessageLookupByLibrary { "gouxuanxieyi" : MessageLookupByLibrary.simpleMessage("请勾选同意隐私服务和一心回乡服务协议"), "guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"), "guanyu" : MessageLookupByLibrary.simpleMessage("关于"), + "guanzhu" : MessageLookupByLibrary.simpleMessage("关注"), "guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"), "haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"), "haimeiyouyouhuiquankeyilingqu" : MessageLookupByLibrary.simpleMessage("还没有优惠券可以领取~"), @@ -490,6 +492,7 @@ class MessageLookup extends MessageLookupByLibrary { "wenzhang" : MessageLookupByLibrary.simpleMessage("文章"), "wenzhangxiangqing" : MessageLookupByLibrary.simpleMessage("文章详情"), "weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"), + "wodedongtai" : MessageLookupByLibrary.simpleMessage("我的动态"), "wodegongju" : MessageLookupByLibrary.simpleMessage("我的工具"), "wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"), "wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"), diff --git a/lib/generated/intl/messages_zh_Hans_CN.dart b/lib/generated/intl/messages_zh_Hans_CN.dart index 2674ccb0..98b6753f 100644 --- a/lib/generated/intl/messages_zh_Hans_CN.dart +++ b/lib/generated/intl/messages_zh_Hans_CN.dart @@ -200,6 +200,7 @@ class MessageLookup extends MessageLookupByLibrary { "faxingshijian" : m4, "feishiwuduihuanma" : MessageLookupByLibrary.simpleMessage("非实物兑换吗"), "feishiwushangpin" : MessageLookupByLibrary.simpleMessage("非实物商品兑换后领取到卡包即可使用!"), + "fensi" : MessageLookupByLibrary.simpleMessage("粉丝"), "fenxiangdao" : MessageLookupByLibrary.simpleMessage("分享到"), "fenxiangyaoqing" : MessageLookupByLibrary.simpleMessage("也可以直接点击右上方的分享给到你想要邀请的人。"), "fenxiangzhiweixin" : MessageLookupByLibrary.simpleMessage("分享至微信"), @@ -217,6 +218,7 @@ class MessageLookup extends MessageLookupByLibrary { "gouxuanxieyi" : MessageLookupByLibrary.simpleMessage("请勾选同意隐私服务和一心回乡服务协议"), "guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"), "guanyu" : MessageLookupByLibrary.simpleMessage("关于"), + "guanzhu" : MessageLookupByLibrary.simpleMessage("关注"), "guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"), "haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"), "haimeiyouyouhuiquankeyilingqu" : MessageLookupByLibrary.simpleMessage("还没有优惠券可以领取~"), @@ -490,6 +492,7 @@ class MessageLookup extends MessageLookupByLibrary { "wenzhang" : MessageLookupByLibrary.simpleMessage("文章"), "wenzhangxiangqing" : MessageLookupByLibrary.simpleMessage("文章详情"), "weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"), + "wodedongtai" : MessageLookupByLibrary.simpleMessage("我的动态"), "wodegongju" : MessageLookupByLibrary.simpleMessage("我的工具"), "wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"), "wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"), diff --git a/lib/generated/intl/messages_zh_Hant_CN.dart b/lib/generated/intl/messages_zh_Hant_CN.dart index 4f01a1e7..cfe6b504 100644 --- a/lib/generated/intl/messages_zh_Hant_CN.dart +++ b/lib/generated/intl/messages_zh_Hant_CN.dart @@ -200,6 +200,7 @@ class MessageLookup extends MessageLookupByLibrary { "faxingshijian" : m4, "feishiwuduihuanma" : MessageLookupByLibrary.simpleMessage("非實物兌換碼"), "feishiwushangpin" : MessageLookupByLibrary.simpleMessage("非實物商品!"), + "fensi" : MessageLookupByLibrary.simpleMessage("粉絲"), "fenxiangdao" : MessageLookupByLibrary.simpleMessage("分享到"), "fenxiangyaoqing" : MessageLookupByLibrary.simpleMessage("也可以直接點擊右上方的分享給到你想要邀請的人。"), "fenxiangzhiweixin" : MessageLookupByLibrary.simpleMessage("分享至微信"), @@ -217,6 +218,7 @@ class MessageLookup extends MessageLookupByLibrary { "gouxuanxieyi" : MessageLookupByLibrary.simpleMessage("請勾選同意隱私服務和一心回鄉服務協定"), "guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"), "guanyu" : MessageLookupByLibrary.simpleMessage("關於"), + "guanzhu" : MessageLookupByLibrary.simpleMessage("關注"), "guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("過健康有機生活"), "haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("還沒有消息~"), "haimeiyouyouhuiquankeyilingqu" : MessageLookupByLibrary.simpleMessage("還沒有優惠券可以領取~"), @@ -490,6 +492,7 @@ class MessageLookup extends MessageLookupByLibrary { "wenzhang" : MessageLookupByLibrary.simpleMessage("文章"), "wenzhangxiangqing" : MessageLookupByLibrary.simpleMessage("文章詳情"), "weulingqu" : MessageLookupByLibrary.simpleMessage("未領取"), + "wodedongtai" : MessageLookupByLibrary.simpleMessage("我的動態"), "wodegongju" : MessageLookupByLibrary.simpleMessage("我的工具"), "wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的會員等級"), "wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的積分值"), diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index cd8c340c..3c39e71d 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/lib/generated/intl/messages_zh_TW.dart @@ -200,6 +200,7 @@ class MessageLookup extends MessageLookupByLibrary { "faxingshijian" : m4, "feishiwuduihuanma" : MessageLookupByLibrary.simpleMessage("非實物兌換碼"), "feishiwushangpin" : MessageLookupByLibrary.simpleMessage("非實物商品!"), + "fensi" : MessageLookupByLibrary.simpleMessage("粉絲"), "fenxiangdao" : MessageLookupByLibrary.simpleMessage("分享到"), "fenxiangyaoqing" : MessageLookupByLibrary.simpleMessage("也可以直接點擊右上方的分享給到你想要邀請的人。"), "fenxiangzhiweixin" : MessageLookupByLibrary.simpleMessage("分享至微信"), @@ -217,6 +218,7 @@ class MessageLookup extends MessageLookupByLibrary { "gouxuanxieyi" : MessageLookupByLibrary.simpleMessage("請勾選同意隱私服務和一心回鄉服務協定"), "guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"), "guanyu" : MessageLookupByLibrary.simpleMessage("關於"), + "guanzhu" : MessageLookupByLibrary.simpleMessage("關注"), "guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("過健康有機生活"), "haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("還沒有消息~"), "haimeiyouyouhuiquankeyilingqu" : MessageLookupByLibrary.simpleMessage("還沒有優惠券可以領取~"), @@ -490,6 +492,7 @@ class MessageLookup extends MessageLookupByLibrary { "wenzhang" : MessageLookupByLibrary.simpleMessage("文章"), "wenzhangxiangqing" : MessageLookupByLibrary.simpleMessage("文章詳情"), "weulingqu" : MessageLookupByLibrary.simpleMessage("未領取"), + "wodedongtai" : MessageLookupByLibrary.simpleMessage("我的動態"), "wodegongju" : MessageLookupByLibrary.simpleMessage("我的工具"), "wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的會員等級"), "wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的積分值"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 34855b1d..5587fa8a 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -5145,6 +5145,36 @@ class S { ); } + /// `粉丝` + String get fensi { + return Intl.message( + '粉丝', + name: 'fensi', + desc: '', + args: [], + ); + } + + /// `关注` + String get guanzhu { + return Intl.message( + '关注', + name: 'guanzhu', + desc: '', + args: [], + ); + } + + /// `我的动态` + String get wodedongtai { + return Intl.message( + '我的动态', + name: 'wodedongtai', + desc: '', + args: [], + ); + } + /// `并使用本机号码登录` String get privacy_policy4 { return Intl.message( diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 0fcd825a..75915aeb 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -534,6 +534,9 @@ "yuanjia": "原价", "xuanguige": "选规格", "chaojiyouhuiquan": "超值优惠券", + "fensi": "粉丝", + "guanzhu": "关注", + "wodedongtai": "我的动态", diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 7184477d..86a5a1b9 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -534,6 +534,9 @@ "yuanjia": "原价", "xuanguige": "选规格", "chaojiyouhuiquan": "超值优惠券", + "fensi": "粉丝", + "guanzhu": "关注", + "wodedongtai": "我的动态", diff --git a/lib/l10n/intl_zh_Hans_CN.arb b/lib/l10n/intl_zh_Hans_CN.arb index 5b337403..2dac914a 100644 --- a/lib/l10n/intl_zh_Hans_CN.arb +++ b/lib/l10n/intl_zh_Hans_CN.arb @@ -534,6 +534,9 @@ "yuanjia": "原价", "xuanguige": "选规格", "chaojiyouhuiquan": "超值优惠券", + "fensi": "粉丝", + "guanzhu": "关注", + "wodedongtai": "我的动态", diff --git a/lib/l10n/intl_zh_Hant_CN.arb b/lib/l10n/intl_zh_Hant_CN.arb index 4bea15d5..92d3ef37 100644 --- a/lib/l10n/intl_zh_Hant_CN.arb +++ b/lib/l10n/intl_zh_Hant_CN.arb @@ -529,6 +529,9 @@ "yuanjia": "原價", "xuanguige": "選規格", "chaojiyouhuiquan": "超值优惠券", + "fensi": "粉絲", + "guanzhu": "關注", + "wodedongtai": "我的動態", diff --git a/lib/l10n/intl_zh_TW.arb b/lib/l10n/intl_zh_TW.arb index 010f674f..3996d39d 100644 --- a/lib/l10n/intl_zh_TW.arb +++ b/lib/l10n/intl_zh_TW.arb @@ -528,6 +528,9 @@ "yuanjia": "原價", "xuanguige": "選規格", "chaojiyouhuiquan": "超值优惠券", + "fensi": "粉絲", + "guanzhu": "關注", + "wodedongtai": "我的動態", diff --git a/lib/mine/manage_address_page.dart b/lib/mine/manage_address_page.dart index 4ec9d1a7..8ae0c7fc 100644 --- a/lib/mine/manage_address_page.dart +++ b/lib/mine/manage_address_page.dart @@ -261,6 +261,7 @@ class _ManageAddressPage extends State { ); } + ///删除地址弹窗 showDeleteDialog(position) { showDialog( context: context, diff --git a/lib/mine/mine_page.dart b/lib/mine/mine_page.dart index 6fb622f8..2e81586d 100644 --- a/lib/mine/mine_page.dart +++ b/lib/mine/mine_page.dart @@ -8,6 +8,8 @@ import 'package:huixiang/main.dart'; import 'package:huixiang/mine/mine_view/mine_order.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/rank.dart'; +import 'package:huixiang/retrofit/data/sign_info.dart'; +import 'package:huixiang/retrofit/data/social_info.dart'; import 'package:huixiang/retrofit/data/user_info.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/event_type.dart'; @@ -35,6 +37,7 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { ApiService apiService; UserInfo userInfo; List ranks = []; + SocialInfo infoNumber; final RefreshController _refreshController = RefreshController(); _toUserInfo() async { @@ -58,6 +61,7 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { @override void initState() { super.initState(); + querySocialInfo(); eventBus.on().listen((event) { print("EventType: ${event.type}"); @@ -112,6 +116,24 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { EasyLoading.dismiss(); } + ///个人社交信息(粉丝/关注数量) + querySocialInfo() async { + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService( + Dio(), + context: context, + token: value.getString("token"), + showLoading: false, + ); + + BaseData baseData = + await apiService.socialInfo().catchError((onError) {}); + if (baseData != null && baseData.isSuccess) { + infoNumber = baseData.data; + } + EasyLoading.dismiss(); + } + @override Widget build(BuildContext context) { super.build(context); @@ -282,10 +304,10 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { ); } - ///关注度/粉丝/发布 + ///关注度/粉丝 Widget attention(){ return Container( - margin: EdgeInsets.only(left: 16,right: 17,top: 10), + margin: EdgeInsets.only(left: 16,top: 10), child:GestureDetector( onTap:(){ Navigator.of(context).pushNamed( @@ -294,33 +316,13 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { ); }, child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( - "关注", - style: TextStyle( - color: Color(0xFF000000), - fontSize: 14.sp, - fontWeight: MyFontWeight.regular, - ), - ), - Text( - "45", - style: TextStyle( - color: Color(0xFF000000), - fontSize: 15.sp, - fontWeight: MyFontWeight.medium, - ), - ), - ], - ), - Row( - children: [ - Text( - "粉丝", + S.of(context).guanzhu, style: TextStyle( color: Color(0xFF000000), fontSize: 14.sp, @@ -328,7 +330,7 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { ), ), Text( - "666", + "(" + (infoNumber != null ?infoNumber.follow.toString() :"()") +")", style: TextStyle( color: Color(0xFF000000), fontSize: 15.sp, @@ -340,7 +342,7 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { Row( children: [ Text( - "发布", + S.of(context).fensi, style: TextStyle( color: Color(0xFF000000), fontSize: 14.sp, @@ -348,7 +350,7 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { ), ), Text( - "666", + "(" + (infoNumber != null ?infoNumber.fans.toString() :"()") +")", style: TextStyle( color: Color(0xFF000000), fontSize: 15.sp, diff --git a/lib/mine/mine_view/community_follow.dart b/lib/mine/mine_view/community_follow.dart index 81844dd5..94a2718c 100644 --- a/lib/mine/mine_view/community_follow.dart +++ b/lib/mine/mine_view/community_follow.dart @@ -1,7 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/mine/follow_page.dart'; -import 'package:huixiang/mine/release_page.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -31,7 +30,7 @@ class _CommunityFollow extends State @override Widget build(BuildContext context) { return DefaultTabController( - length: 3, + length: 2, child: Scaffold( appBar: MyAppBar( title: "", @@ -59,12 +58,11 @@ class _CommunityFollow extends State tabs: [ MyTab(text:"关注(0)",), MyTab(text: "粉丝(0)"), - MyTab(text: "发布(0)"), ], ), ), body: TabBarView( - children: [FollowPage(),FansPage(),ReleasePage()], + children: [FollowPage(),FansPage()], ), ), ); diff --git a/lib/mine/mine_view/mine_item.dart b/lib/mine/mine_view/mine_item.dart index 4f392be2..4ee2a33d 100644 --- a/lib/mine/mine_view/mine_item.dart +++ b/lib/mine/mine_view/mine_item.dart @@ -60,6 +60,23 @@ class _MineItem extends State { ), ), ), + InkWell( + onTap: () { + SharedPreferences.getInstance().then((value) { + if (value.getString("token") == null || + value.getString("token") == "") { + LoginTipsDialog().show(context); + return; + } + Navigator.of(context) + .pushNamed('/router/releasePage'); + }); + }, + child: mineItem( + S.of(context).wodedongtai, + "assets/image/dynamic.png", + ), + ), InkWell( onTap: () { SharedPreferences.getInstance().then((value) { diff --git a/lib/mine/release_page.dart b/lib/mine/release_page.dart index 3a1ec9b1..01c7dff0 100644 --- a/lib/mine/release_page.dart +++ b/lib/mine/release_page.dart @@ -2,11 +2,13 @@ import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/community/community_view/community_dynamic.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/comunity_comment.dart'; import 'package:huixiang/retrofit/data/page.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/view_widget/classic_header.dart'; +import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:huixiang/view_widget/my_footer.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -77,38 +79,53 @@ class _ReleasePage extends State { return FutureBuilder( future: queryCommunity(), builder: (context, position) { - return SmartRefresher( - controller: refreshController, - enablePullDown: true, - enablePullUp: true, - physics: BouncingScrollPhysics(), - header: MyHeader(), - footer: CustomFooter( - builder: (context, mode) { - return MyFooter(mode); + return Scaffold( + appBar: MyAppBar( + background: Color(0xFFFFFFFF), + leadingColor: Colors.black, + title: "动态", + titleColor: Colors.black, + titleSize: 18.sp, + ), + body: SmartRefresher( + controller: refreshController, + enablePullDown: true, + enablePullUp: true, + physics: BouncingScrollPhysics(), + header: MyHeader(), + footer: CustomFooter( + builder: (context, mode) { + return MyFooter(mode); + }, + ), + onRefresh: _onRefresh, + onLoading: () { + setState(() {}); }, - ), - onRefresh: _onRefresh, - onLoading: () { - setState(() {}); - }, - child: ListView.builder( - physics: NeverScrollableScrollPhysics(), - itemBuilder: (context, position) { - return InkWell( - child: CommunityDynamic(comments[position],1), - onTap: () { - Navigator.of(context).pushNamed( - '/router/community_details', - arguments: { - "comment": comments[position], + child: ListView.builder( + physics: NeverScrollableScrollPhysics(), + itemBuilder: (context, position) { + return InkWell( + child: CommunityDynamic( + comments[position], + 1, + removalDynamic: () { + _onRefresh(); }, - ); - }, - ); - }, - itemCount: comments.length, - )); + ), + onTap: () { + Navigator.of(context).pushNamed( + '/router/community_details', + arguments: { + "comment": comments[position], + }, + ); + }, + ); + }, + itemCount: comments.length, + )), + ); }, ); } diff --git a/lib/retrofit/data/article.dart b/lib/retrofit/data/article.dart index 620b84a6..e199a6c3 100644 --- a/lib/retrofit/data/article.dart +++ b/lib/retrofit/data/article.dart @@ -24,6 +24,7 @@ class Article { bool _isHot; bool _liked; int _viewers; + int _comments; bool isFollow; dynamic _storeName; @@ -47,6 +48,7 @@ class Article { bool get isHot => _isHot; bool get liked => _liked; int get viewers => _viewers; + int get comments => _comments; dynamic get storeName => _storeName; set likes(int value) { @@ -61,6 +63,10 @@ class Article { _viewers = value; } + set comments(int value) { + _comments = value; + } + Article({ String id, String createTime, @@ -72,7 +78,7 @@ class Article { dynamic viceTitle, String content, String coverImg, - Author author, + Author author, int type, String startTime, String endTime, @@ -81,6 +87,7 @@ class Article { int likes, bool isHot, int viewers, + int comments, dynamic storeName}){ _id = id; _createTime = createTime; @@ -102,6 +109,7 @@ class Article { _isHot = isHot; _liked = liked; _viewers = viewers; + _comments = comments; _storeName = storeName; } @@ -126,6 +134,7 @@ class Article { _isHot = json["isHot"]; _liked = json["liked"]; _viewers = json["viewers"]; + _comments = json["comments"]; _storeName = json["storeName"]; } @@ -151,6 +160,7 @@ class Article { map["isHot"] = _isHot; map["liked"] = _liked; map["viewers"] = _viewers; + map["comments"] = _comments; map["storeName"] = _storeName; return map; } diff --git a/lib/retrofit/data/social_info.dart b/lib/retrofit/data/social_info.dart new file mode 100644 index 00000000..a35c27af --- /dev/null +++ b/lib/retrofit/data/social_info.dart @@ -0,0 +1,37 @@ +/// fans : 0 +/// follow : 0 + +class SocialInfo { + SocialInfo({ + int fans, + int follow,}){ + _fans = fans; + _follow = follow; +} + + SocialInfo.fromJson(dynamic json) { + _fans = json['fans']; + _follow = json['follow']; + } + int _fans; + int _follow; + + int get fans => _fans; + int get follow => _follow; + + + set fans(int value) { + _fans = value; + } + + Map toJson() { + final map = {}; + map['fans'] = _fans; + map['follow'] = _follow; + return map; + } + + set follow(int value) { + _follow = value; + } +} \ No newline at end of file diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 16bd62b3..8074e2e4 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -30,6 +30,7 @@ import 'data/message.dart'; import 'data/page.dart'; import 'data/rank.dart'; import 'data/sign_info.dart'; +import 'data/social_info.dart'; import 'data/store.dart'; import 'data/upload_result.dart'; import 'data/user_bill.dart'; @@ -382,4 +383,12 @@ abstract class ApiService { @PUT("/member/follow/{followId}") Future follow(@Path("followId") String followId); + ///删除动态 + @DELETE("/information/trend/{id}") + Future deleteTrend(@Path("id") String id); + + ///个人社交信息(粉丝/关注数量) + @GET("/member/socialInfo") + Future> socialInfo(); + } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index 0e5e21d1..456ad398 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -1303,4 +1303,47 @@ class _ApiService implements ApiService { ); return value; } + + @override + Future> deleteTrend(id) async { + ArgumentError.checkNotNull(id, 'id'); + const _extra = {}; + final queryParameters = {}; + final _data = {}; + final _result = await _dio.request>( + '/information/trend/$id', + queryParameters: queryParameters, + options: RequestOptions( + method: 'DELETE', + headers: {}, + extra: _extra, + baseUrl: baseUrl), + data: _data); + final value = BaseData.fromJson( + _result.data, + (json) => json as dynamic, + ); + return value; + } + + @override + Future> socialInfo() async { + const _extra = {}; + final queryParameters = {}; + final _data = {}; + final _result = await _dio.request>( + '/member/socialInfo', + queryParameters: queryParameters, + options: RequestOptions( + method: 'GET', + headers: {}, + extra: _extra, + baseUrl: baseUrl), + data: _data); + final value = BaseData.fromJson( + _result.data, + (json) => SocialInfo.fromJson(json), + ); + return value; + } } diff --git a/lib/view_widget/hot_item.dart b/lib/view_widget/hot_item.dart index a4523ea7..f6f28574 100644 --- a/lib/view_widget/hot_item.dart +++ b/lib/view_widget/hot_item.dart @@ -61,6 +61,7 @@ class _HotArticleItem extends State { setState(() {}); } + Widget hotItem(BuildContext context) { return Container( padding: EdgeInsets.all((widget.isHot == null || !widget.isHot) ? 4 : 0), @@ -79,87 +80,88 @@ class _HotArticleItem extends State { child: (widget.isHot == null || !widget.isHot) ? Column( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.only(left: 5), - child: Row( - children: [ - MImage( - (widget.article != null && - widget.article.author != null) - ? widget.article.author.avatar - : "", - width: 44, - height: 44, - isCircle: true, - fit: BoxFit.cover, - errorSrc: "assets/image/default_1.png", - fadeSrc: "assets/image/default_1.png", - ), - SizedBox( - width: 8, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - (widget.article != null && - widget.article.author != null) - ? widget.article.author.name - : "", - style: TextStyle( - fontSize: 14.sp, - fontWeight: MyFontWeight.medium, - color: Color(0xFF1A1A1A), - ), - ), - Text( - widget.article != null - ? (widget.article.createTime.split(" ")[0]) - : "", - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.regular, - color: Color(0xFF808080), - ), - ), - ], - ), - ], - ), - ), - GestureDetector( - onTap: (){ - setState(() { - widget.article.isFollow = !(widget.article.isFollow??false); - _vipFollow(widget.article.updateUser); - }); - }, - child: RoundButton( - padding: EdgeInsets.symmetric( - horizontal: 8, - vertical: 3, - ), - backgroup: (widget.article.isFollow??false) ? Color(0xFFE6E6E6) : Color(0xFF32A060), - textColor: (widget.article.isFollow??false) ? Color(0xFF808080):Colors.white , - text:(widget.article.isFollow??false) ? "已关注":"关注", - radius: 20, - icons: Icon( - (widget.article.isFollow??false) ? Icons.check: Icons.add, - color:(widget.article.isFollow??false) ? Color(0xFF808080):Colors.white , - size: 14, - ), - ), - ), - ], - ), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // Container( + // margin: EdgeInsets.only(left: 5), + // child: Row( + // children: [ + // MImage( + // (widget.article != null && + // widget.article.author != null) + // ? widget.article.author.avatar + // : "", + // width: 44, + // height: 44, + // isCircle: true, + // fit: BoxFit.cover, + // errorSrc: "assets/image/default_1.png", + // fadeSrc: "assets/image/default_1.png", + // ), + // SizedBox( + // width: 8, + // ), + // Column( + // mainAxisAlignment: MainAxisAlignment.spaceEvenly, + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text( + // (widget.article != null && + // widget.article.author != null) + // ? widget.article.author.name + // : "", + // style: TextStyle( + // fontSize: 14.sp, + // fontWeight: MyFontWeight.medium, + // color: Color(0xFF1A1A1A), + // ), + // ), + // Text( + // widget.article != null + // ? (widget.article.createTime.split(" ")[0]) + // : "", + // style: TextStyle( + // fontSize: 12.sp, + // fontWeight: MyFontWeight.regular, + // color: Color(0xFF808080), + // ), + // ), + // ], + // ), + // ], + // ), + // ), + // GestureDetector( + // onTap: (){ + // setState(() { + // widget.article.isFollow = !(widget.article.isFollow??false); + // _vipFollow(widget.article.updateUser); + // }); + // }, + // child: RoundButton( + // padding: EdgeInsets.symmetric( + // horizontal: 8, + // vertical: 3, + // ), + // backgroup: (widget.article.isFollow??false) ? Color(0xFFE6E6E6) : Color(0xFF32A060), + // textColor: (widget.article.isFollow??false) ? Color(0xFF808080):Colors.white , + // text:(widget.article.isFollow??false) ? "已关注":"关注", + // radius: 20, + // icons: Icon( + // (widget.article.isFollow??false) ? Icons.check: Icons.add, + // color:(widget.article.isFollow??false) ? Color(0xFF808080):Colors.white , + // size: 14, + // ), + // ), + // ), + // ], + // ), Expanded(child:Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ + SizedBox(height: 5.h), Expanded( child: Container( margin: EdgeInsets.only(left: 12.w), @@ -192,6 +194,7 @@ class _HotArticleItem extends State { ], ), ), + SizedBox(width:5.w,), ], )), SizedBox(height: 10.h,) @@ -327,7 +330,7 @@ class _HotArticleItem extends State { ), Text( (widget.article != null) - ? "${widget.article.viewers}" + ? "${widget.article.comments}" : "", style: TextStyle( fontSize: 12.sp, @@ -494,7 +497,7 @@ class _HotArticleItem extends State { ), Text( (widget.article != null) - ? "${widget.article.viewers}" + ? "${widget.article.comments}" : "", style: TextStyle( fontSize: 12.sp, diff --git a/lib/web/web_page.dart b/lib/web/web_page.dart index 65ec1cdb..e5949299 100644 --- a/lib/web/web_page.dart +++ b/lib/web/web_page.dart @@ -123,8 +123,10 @@ class _WebPage extends State with WidgetsBindingObserver { "relationalType": 1 }).catchError((error) {}); if (baseData != null && baseData.isSuccess) { - commentKey.currentState.initState(); + CommentListState _commentList = commentKey.currentState; + _commentList.queryMemberCommentList(); commentTextController.text = ""; + FocusScope.of(context).unfocus(); _toComment(); } } @@ -310,7 +312,8 @@ class _WebPage extends State with WidgetsBindingObserver { BaseData baseData = await apiService.delComment( widget.arguments["activityId"] ?? widget.arguments["articleId"]); if (baseData != null && baseData.isSuccess) { - commentKey.currentState.initState(); + CommentListState _commentList = commentKey.currentState; + _commentList.queryMemberCommentList(); } } diff --git a/lib/web/web_view/comment_list.dart b/lib/web/web_view/comment_list.dart index 91f782fd..69a27904 100644 --- a/lib/web/web_view/comment_list.dart +++ b/lib/web/web_view/comment_list.dart @@ -30,11 +30,11 @@ class CommentList extends StatefulWidget { @override State createState() { - return _CommentList(); + return CommentListState(); } } -class _CommentList extends State { +class CommentListState extends State { int commentTotal = 0; List memberList = []; ApiService apiService;