fix: dialog text color in dark theme

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou
2026-02-01 10:15:39 +08:00
parent 255ce534c9
commit 0592905ad4

View File

@@ -1126,52 +1126,43 @@ Widget createDialogContent(String text) {
final RegExp linkRegExp = RegExp(r'(https?://[^\s]+)');
bool hasLink = linkRegExp.hasMatch(text);
// Early return: no link, use default theme color
if (!hasLink) {
return SelectableText(text, style: const TextStyle(fontSize: 15));
}
return Builder(
builder: (context) {
final List<TextSpan> spans = [];
int start = 0;
// Get theme-aware color for non-link text
final textColor = Theme.of(context).textTheme.bodyMedium?.color;
final List<TextSpan> spans = [];
int start = 0;
linkRegExp.allMatches(text).forEach((match) {
if (match.start > start) {
spans.add(TextSpan(text: text.substring(start, match.start)));
}
spans.add(TextSpan(
text: match.group(0) ?? '',
style: TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = () {
String linkText = match.group(0) ?? '';
linkText = linkText.replaceAll(RegExp(r'[.,;!?]+$'), '');
launchUrl(Uri.parse(linkText));
},
));
start = match.end;
});
linkRegExp.allMatches(text).forEach((match) {
if (match.start > start) {
spans.add(TextSpan(text: text.substring(start, match.start)));
}
spans.add(TextSpan(
text: match.group(0) ?? '',
style: const TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = () {
String linkText = match.group(0) ?? '';
linkText = linkText.replaceAll(RegExp(r'[.,;!?]+$'), '');
launchUrl(Uri.parse(linkText));
},
));
start = match.end;
});
if (start < text.length) {
spans.add(TextSpan(text: text.substring(start)));
}
if (start < text.length) {
spans.add(TextSpan(text: text.substring(start)));
}
return SelectableText.rich(
TextSpan(
style: TextStyle(
color: textColor,
fontSize: 15,
),
children: spans,
),
);
},
return SelectableText.rich(
TextSpan(
style: const TextStyle(fontSize: 15),
children: spans,
),
);
}