Skip to content

Commit

Permalink
Add text length check
Browse files Browse the repository at this point in the history
  • Loading branch information
Luxorum committed Apr 26, 2023
1 parent a128724 commit 98a5fc8
Showing 1 changed file with 36 additions and 31 deletions.
67 changes: 36 additions & 31 deletions lib/presentation/widgets/language_tool_text_editing_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,47 +29,52 @@ class LanguageToolTextEditingController extends TextEditingController {

final lastMistakeIndex = mistakes.length - 1;

try {
for (int i = 0; i < mistakes.length; i++) {
final mistake = mistakes[i];
int previousMistakePosition = 0;
if (i > 0) {
final previousMistake = mistakes[i - 1];
previousMistakePosition =
previousMistake.offset + previousMistake.length;
}
final mistakeStart = mistake.offset;
final mistakeEnd = mistakeStart + mistake.length;
for (int i = 0; i < mistakes.length; i++) {
final mistake = mistakes[i];
int previousMistakePosition = 0;
if (i > 0) {
final previousMistake = mistakes[i - 1];
previousMistakePosition =
previousMistake.offset + previousMistake.length;
}
final mistakeStart = mistake.offset;
final mistakeEnd = mistakeStart + mistake.length;

if (mistakeEnd > text.length) {
children.add(
TextSpan(text: text.substring(previousMistakePosition, mistakeStart)),
TextSpan(
text: text.substring(previousMistakePosition),
),
);
break;
}

children.add(
TextSpan(text: text.substring(previousMistakePosition, mistakeStart)),
);

final textStyle = style ?? const TextStyle();
final textStyle = style ?? const TextStyle();
children.add(
TextSpan(
text: text.substring(mistakeStart, mistakeEnd),
style: textStyle.copyWith(
decoration: TextDecoration.underline,
decorationColor: Colors.red,
decorationThickness: underlineThickness,
backgroundColor: Colors.red.withOpacity(backgroundOpacity),
),
),
);

if (i == lastMistakeIndex) {
children.add(
TextSpan(
text: text.substring(mistakeStart, mistakeEnd),
style: textStyle.copyWith(
decoration: TextDecoration.underline,
decorationColor: Colors.red,
decorationThickness: underlineThickness,
backgroundColor: Colors.red.withOpacity(backgroundOpacity),
text: text.substring(
mistakeEnd,
),
),
);

if (i == lastMistakeIndex) {
children.add(
TextSpan(
text: text.substring(
mistakeEnd,
),
),
);
}
}
} catch (e) {
return TextSpan(text: text, style: style);
}

return TextSpan(children: children, style: style);
Expand Down

0 comments on commit 98a5fc8

Please sign in to comment.