handleRegionFields method

dynamic handleRegionFields()

Implementation

handleRegionFields() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  EditorRegionOptions? region = widget.options.regionOptions;
  String path = widget.path;
  String fileContent = widget.defaultValue;

  if (region != null) {
    int regionStart = region.start!;
    int regionEnd = region.end!;

    if (prefs.get(path) != null) {
      regionStart = int.parse(prefs.getString(path)?.split(':')[0] ?? '');
      regionEnd = int.parse(prefs.getString(path)?.split(':')[1] ?? '');
    }

    int lines = fileContent.split('\n').length;

    if (lines >= 1) {
      String beforeEditableRegionText =
          fileContent.split('\n').sublist(0, regionStart).join('\n');

      String inEditableRegionText = fileContent
          .split('\n')
          .sublist(regionStart, regionEnd - 1)
          .join('\n');

      String afterEditableRegionText = fileContent
          .split('\n')
          .sublist(regionEnd - 1, fileContent.split('\n').length)
          .join('\n');
      beforeController.text = beforeEditableRegionText;
      inController.text = inEditableRegionText;
      afterController.text = afterEditableRegionText;
    }
  } else {
    beforeController.text = '';
    inController.text = fileContent;
    afterController.text = '';
  }

  updateLineCount(inController.text, RegionPosition.inner);
}