import 'package:chat/data/UserData.dart'; import 'package:chat/data/WebData.dart'; import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:chat/models/ref_name_provider.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class InfoType { static const int Apply = 1; static const int Evaluation = 2; static const int System = 3; static const int Radio = 4; static const int Money = 5; static const int IncomeMoney = 6; static const int MyMoney = 7; } class TitleItem { String title = ''; String name = ''; String value = ''; TitleItem({this.title, this.name, this.value}); } class RichTitle { static List getRichText(TitleItem titleItem, {titleStyle, nameStyle}) { if (nameStyle == null) { nameStyle = TextStyle( fontWeight: FontWeight.w500, color: Constants.BlackTextColor); } if (titleStyle == null) { titleStyle = TextStyle(color: Constants.GreyTextColor); } titleItem.title = titleItem.title == null ? '' : titleItem.title; List list = titleItem.title.split('/s1'); titleItem.name = titleItem.name == null ? '' : titleItem.name; List child; if (list == null) { child = [ TextSpan(text: titleItem.title, style: titleStyle), ]; } else { child = list.length > 1 ? [ TextSpan(text: list[0] == '' ? '' : list[0], style: titleStyle), TextSpan(text: titleItem.name, style: nameStyle), TextSpan(text: list[1], style: titleStyle), ] : [ TextSpan(text: titleItem.name, style: nameStyle), TextSpan(text: list[0], style: titleStyle), ]; } return child; } static String getNormalText(TitleItem titleItem) { List list = titleItem.title.split('/s1'); titleItem.name = titleItem.name == null ? '' : titleItem.name; String res = ''; if (list == null) { res = titleItem.title; } else { list.length > 1 ? res = (list[0] == '' ? list[0] : list[0]) + titleItem.name + list[1] : res = titleItem.name + list[0]; } return res; } //申请 static TitleItem _delApplyTitle(userInfo, BuildContext context) { print(userInfo); bool isMyself = userInfo['ApplyUserId'] == UserData().basicInfo.userId; String name = isMyself ? Provider.of(context) .getRefName(userInfo['UserId'], userInfo['UserName']) : Provider.of(context) .getRefName(userInfo['ApplyUserId'], userInfo['ApplyName']); String title = isMyself ? userInfo['Status'] == 1 ? I18n.of(context).l15_days : I18n.of(context).reject_reply : I18n.of(context).view_application2; if (userInfo['Type'] == 1) { title = isMyself ? I18n.of(context).applyed_friends : I18n.of(context).apply_friends; } return TitleItem(title: title, name: name); } //评价 static TitleItem _delEvaluateTitle(userInfo, BuildContext context) { String name = WebData().getEvaluation(context, userInfo['Value']); String title = ''; if (userInfo['Status'] == 2) { title = I18n.of(context).successful_appeal; } else if (userInfo['Status'] == 3) { title = I18n.of(context).successful_appeal1; } else { title = UserData().isMan() ? I18n.of(context).received_evaluation : I18n.of(context).received_evaluation2; } return TitleItem(title: title, name: name); } //电台 static TitleItem _delRadioTitle(data, BuildContext context) { bool isProgram = data['ProgramType'] == 0; String title; switch (data['Type']) { case 1: title = isProgram ? I18n.of(context).thumbs_up2 : I18n.of(context).thumbs_up; break; case 2: title = isProgram ? I18n.of(context).comment2 : I18n.of(context).comment1; break; case 3: title = I18n.of(context).signed_up; break; case 4: title = isProgram ? I18n.of(context).favorite_user : I18n.of(context).favorite_user2; break; case 5: title = I18n.of(context).replied_comment; break; default: } return TitleItem( title: title, name: Provider.of(context) .getRefName(data['UserId'], data['UserName'])); } //系统 static TitleItem _delSystemTitle(data, BuildContext context) { bool isMyself = data['UserId'] == UserData().basicInfo.userId; bool isPass = data['Status'] == 1; String title = ''; String name = Provider.of(context) .getRefName(data['ReportedUserId'], data['ReportedUserName']); switch (data['Type']) { case 1: title = isPass ? I18n.of(context).upload_success : I18n.of(context).re_upload; break; case 2: title = isPass ? I18n.of(context).successful_authentication : I18n.of(context).authentication_failed; break; case 3: if (isMyself) { title = data['Status'] == 1 ? I18n.of(context).report_success : I18n.of(context).report_failure; } else { title = I18n.of(context).coin_returen; } break; case 4: title = data['Status'] == 1 ? I18n.of(context).successful_application : I18n.of(context).application_failed; name = data['Status'] == 1 ? data['Content'].toString() : null; break; case 5: title = '代理会员推送相关'; break; default: } return TitleItem(title: title, name: name); } //钱包 static TitleItem _delMoneyTitle(data, BuildContext context) { String title = ''; bool isMyself = data['UserId'] == UserData().basicInfo.userId; String name = Provider.of(context) .getRefName(data['ChangeUserId'], data['UserName']); switch (data['DetailType'] == 10 ? data['Status'] : data['DetailType']) { case 1: title = I18n.of(context).get_coin2; name = data['Value'].toString(); break; case 2: title = I18n.of(context).buy_vip; name = data['Value'].toString(); break; case 3: title = isMyself ? I18n.of(context) .paid_you4 .replaceFirst('/s2', data['Value'].toString()) : I18n.of(context) .paid_you .replaceFirst('/s2', data['Value'].toString()); break; case 4: title = isMyself ? I18n.of(context) .paid_you5 .replaceFirst('/s2', data['Value'].toString()) : I18n.of(context) .paid_you2 .replaceFirst('/s2', data['Value'].toString()); break; case 5: title = I18n.of(context).buy_program; name = data['Value'].toString(); break; case 6: if (data['Status'] == 0) { title = I18n.of(context).del_add_money; } else if (data['Status'] == 1) { title = I18n.of(context).adding_money; } else { title = I18n.of(context).withdraw_fail; } name = data['Value'].toString(); break; case 7: title = isMyself ? I18n.of(context).paid_you6 : I18n.of(context).paid_you3; break; case 8: title = isMyself ? I18n.of(context) .give_other_money .replaceFirst('/s2', data['Value'].toString()) : I18n.of(context) .get_other_money .replaceFirst('/s2', data['Value'].toString()); break; case 9: title = isMyself ? I18n.of(context) .give_red_money .replaceFirst('/s2', data['Value'].toString()) : I18n.of(context) .get_red_money .replaceFirst('/s2', data['Value'].toString()); break; case 11: title = I18n.of(context).Redeem; name = data['Value'].toString(); break; } return TitleItem(title: title, name: name); } //收入金额 static TitleItem _delInMoneyTitle(data, BuildContext context) { String title = ''; String name = Provider.of(context) .getRefName(data['UserId'], data['UserName']); switch (data['DetailType']) { case 1: if (data['Status'] == 0) { title = I18n.of(context).del_add_money; } else if (data['Status'] == 1) { title = I18n.of(context).withdraw_fail; } else { title = I18n.of(context).adding_money; } name = data['Value'].toString(); break; case 2: title = I18n.of(context).change_h_coin; name = data['Value'].toString(); break; case 3: title = I18n.of(context) .get_other_money .replaceFirst('/s2', data['Value'].toString()); break; case 4: title = I18n.of(context) .get_red_money .replaceFirst('/s2', data['Value'].toString()); break; case 5: title = I18n.of(context).paid_you3; break; case 6: title = I18n.of(context) .paid_you .replaceFirst('/s2', data['Value'].toString()); break; case 7: title = I18n.of(context) .paid_you2 .replaceFirst('/s2', data['Value'].toString()); break; case 8: title = I18n.of(context).Representation_succes; break; case 9: title = I18n.of(context).system_give; break; case 10: title = I18n.of(context).exchange_fail; break; } return TitleItem(title: title, name: name); } //我的余额 static TitleItem _delMyMoneyTitle(data, BuildContext context) { String title = ''; String name = Provider.of(context) .getRefName(data['UserId'], data['UserName']); switch (data['DetailType']) { case 1: title = I18n.of(context).get_coin2; name = data['Value'].toString(); break; case 2: title = I18n.of(context).hibok_exchange; name = data['Value'].toString(); break; case 3: title = I18n.of(context).bind_code_success; break; case 4: title = I18n.of(context) .give_other_money .replaceFirst('/s2', data['Value'].toString()); break; case 5: title = I18n.of(context) .give_red_money .replaceFirst('/s2', data['Value'].toString()); break; case 6: title = I18n.of(context) .paid_you6 .replaceFirst('/s2', data['Value'].toString()); break; case 7: title = I18n.of(context) .paid_you4 .replaceFirst('/s2', data['Value'].toString()); break; case 8: title = I18n.of(context) .paid_you5 .replaceFirst('/s2', data['Value'].toString()); break; case 9: title = I18n.of(context).buy_vip; name = data['Value'].toString(); break; case 10: title = I18n.of(context).translate_money; name = data['Value'].toString(); break; case 11: title = I18n.of(context).buy_program; name = data['Value'].toString(); break; case 12: title = I18n.of(context).Representation_succes; break; case 13: title = I18n.of(context).system_back; break; case 14: title = I18n.of(context).system_give; break; } return TitleItem(title: title, name: name); } static TitleItem _getTypeTitleItem(userInfo, BuildContext context, int type) { var tileItem = TitleItem(); switch (type) { case InfoType.Apply: tileItem = _delApplyTitle(userInfo, context); break; case InfoType.Radio: tileItem = _delRadioTitle(userInfo, context); break; case InfoType.System: tileItem = _delSystemTitle(userInfo, context); break; case InfoType.Money: tileItem = _delMoneyTitle(userInfo, context); break; case InfoType.IncomeMoney: tileItem = _delInMoneyTitle(userInfo, context); break; case InfoType.MyMoney: tileItem = _delMyMoneyTitle(userInfo, context); break; case InfoType.Evaluation: tileItem = _delEvaluateTitle(userInfo, context); break; default: } return tileItem; } static Widget getRichTitleWidget(userInfo, BuildContext context, int type, {titleStyle, nameStyle}) { var tileItem = _getTypeTitleItem(userInfo, context, type); return RichText( text: TextSpan( children: getRichText(tileItem, titleStyle: titleStyle, nameStyle: nameStyle))); } static String normalTitle(userInfo, BuildContext context, int type) { if (userInfo == null) { return ''; } var tileItem = _getTypeTitleItem(userInfo, context, type); var res = getNormalText(tileItem); int maxlength = 17; return res.length > maxlength ? res.substring(0, maxlength) + '...' : res; } }