fix: 评论区展示@用户 issues #344
This commit is contained in:
@ -2,7 +2,7 @@ class ReplyContent {
|
|||||||
ReplyContent({
|
ReplyContent({
|
||||||
this.message,
|
this.message,
|
||||||
this.atNameToMid, // @的用户的mid null
|
this.atNameToMid, // @的用户的mid null
|
||||||
this.memebers, // 被@的用户List 如果有的话 []
|
this.members, // 被@的用户List 如果有的话 []
|
||||||
this.emote, // 表情包 如果有的话 null
|
this.emote, // 表情包 如果有的话 null
|
||||||
this.jumpUrl, // {}
|
this.jumpUrl, // {}
|
||||||
this.pictures, // {}
|
this.pictures, // {}
|
||||||
@ -13,7 +13,7 @@ class ReplyContent {
|
|||||||
|
|
||||||
String? message;
|
String? message;
|
||||||
Map? atNameToMid;
|
Map? atNameToMid;
|
||||||
List? memebers;
|
List<MemberItemModel>? members;
|
||||||
Map? emote;
|
Map? emote;
|
||||||
Map? jumpUrl;
|
Map? jumpUrl;
|
||||||
List? pictures;
|
List? pictures;
|
||||||
@ -27,7 +27,11 @@ class ReplyContent {
|
|||||||
.replaceAll('"', '"')
|
.replaceAll('"', '"')
|
||||||
.replaceAll(''', "'");
|
.replaceAll(''', "'");
|
||||||
atNameToMid = json['at_name_to_mid'] ?? {};
|
atNameToMid = json['at_name_to_mid'] ?? {};
|
||||||
memebers = json['memebers'] ?? [];
|
members = json['members'] != null
|
||||||
|
? json['members']
|
||||||
|
.map<MemberItemModel>((e) => MemberItemModel.fromJson(e))
|
||||||
|
.toList()
|
||||||
|
: [];
|
||||||
emote = json['emote'] ?? {};
|
emote = json['emote'] ?? {};
|
||||||
jumpUrl = json['jump_url'] ?? {};
|
jumpUrl = json['jump_url'] ?? {};
|
||||||
pictures = json['pictures'] ?? [];
|
pictures = json['pictures'] ?? [];
|
||||||
@ -37,3 +41,18 @@ class ReplyContent {
|
|||||||
isText = atNameToMid!.isEmpty && vote!.isEmpty && pictures!.isEmpty;
|
isText = atNameToMid!.isEmpty && vote!.isEmpty && pictures!.isEmpty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MemberItemModel {
|
||||||
|
MemberItemModel({
|
||||||
|
required this.mid,
|
||||||
|
required this.uname,
|
||||||
|
});
|
||||||
|
|
||||||
|
late String mid;
|
||||||
|
late String uname;
|
||||||
|
|
||||||
|
MemberItemModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
mid = json['mid'];
|
||||||
|
uname = json['uname'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -628,8 +628,13 @@ InlineSpan buildContent(
|
|||||||
// 匹配@用户
|
// 匹配@用户
|
||||||
String matchMember = str;
|
String matchMember = str;
|
||||||
if (content.atNameToMid.isNotEmpty) {
|
if (content.atNameToMid.isNotEmpty) {
|
||||||
|
RegExp reg = RegExp(r"@.*( |:)");
|
||||||
|
if (content.atNameToMid.length == 1 &&
|
||||||
|
content.message == '@${content.members.first.uname}') {
|
||||||
|
reg = RegExp(r"@.*( |:|$)");
|
||||||
|
}
|
||||||
matchMember = str.splitMapJoin(
|
matchMember = str.splitMapJoin(
|
||||||
RegExp(r"@.*( |:)"),
|
reg,
|
||||||
onMatch: (Match match) {
|
onMatch: (Match match) {
|
||||||
if (match[0] != null) {
|
if (match[0] != null) {
|
||||||
hasMatchMember = false;
|
hasMatchMember = false;
|
||||||
@ -657,7 +662,9 @@ InlineSpan buildContent(
|
|||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
onNonMatch: (String str) {
|
onNonMatch: (String str) {
|
||||||
spanChilds.add(TextSpan(text: str));
|
if (!str.contains('@')) {
|
||||||
|
spanChilds.add(TextSpan(text: str));
|
||||||
|
}
|
||||||
return str;
|
return str;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user