Dart 将简单 class 转换为扩展

Dart convert simple class to extension

我在这里粘贴了我的简单 class,我可以将英文数字转换为阿拉伯数字,我想将其转换为扩展名

class Strings{
  static String replaceFarsiNumber(String input, bool reverse) {
    const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
    const farsi = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];

    /*en to fa*/
    if (reverse) {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(english[i], farsi[i]);
      }
    } else {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(farsi[i], english[i]);
      }
    }
    return input;
  }
}

因为我在 extensions 中是新手,我在 flutter 中使用这个 class 我如何才能将它转换为扩展:

extension ConvertNum on String {
  static const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
  static const farsi = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];

  String changeNUm(String input, bool reverse) {
    /*en to fa*/
    if (reverse) {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(english[i], farsi[i]);
      }
    } else {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(farsi[i], english[i]);
      }
    }
    return input;
  }
}

你快搞定了。基本上,在内部和扩展中,使用 this 来引用当前字符串:

extension ConvertNum on String {
  static const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
  static const farsi = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];

  String changeNUm(bool reverse) {
    /*en to fa*/
    String input = this;
    if (reverse) {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(english[i], farsi[i]);
      }
    } else {
      for (int i = 0; i < english.length; i++) {
        input = input.replaceAll(farsi[i], english[i]);
      }
    }
    return input;
  }
}