diff --git a/lib/core/controllers/colored_text_editing_controller.dart b/lib/core/controllers/colored_text_editing_controller.dart index 40c9d50..459644a 100644 --- a/lib/core/controllers/colored_text_editing_controller.dart +++ b/lib/core/controllers/colored_text_editing_controller.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:languagetool_textfield/core/enums/mistake_type.dart'; @@ -109,7 +111,7 @@ class ColoredTextEditingController extends TextEditingController { yield TextSpan( text: text.substring( currentOffset, - mistake.offset, + min(mistake.offset, text.length), ), style: style, ); @@ -130,7 +132,10 @@ class ColoredTextEditingController extends TextEditingController { yield TextSpan( children: [ TextSpan( - text: text.substring(mistake.offset, mistake.endOffset), + text: text.substring( + mistake.offset, + min(mistake.endOffset, text.length), + ), mouseCursor: MaterialStateMouseCursor.clickable, style: style?.copyWith( backgroundColor: mistakeColor.withOpacity( @@ -145,7 +150,7 @@ class ColoredTextEditingController extends TextEditingController { ], ); - currentOffset = mistake.endOffset; + currentOffset = min(mistake.endOffset, text.length); } /// TextSpan after mistake