【问题标题】:How to convert Latin letters from keyboard to Thaana Unicode in Flutter?如何在 Flutter 中将拉丁字母从键盘转换为 Thaana Unicode?
【发布时间】:2021-01-29 23:08:50
【问题描述】:

我在 Flutter 中使用我的母语构建应用程序但是,我的语言(马尔代夫使用的 Dhivehi)不是 Flutter 本地化包中支持的语言。

我尝试使用本地化包将其添加为新语言,但我无法做到。

在我的应用程序中有一个 TextField,用户必须在其中输入 Dhivehi 字母 (Thaana),以便他们可以在应用程序中搜索内容。如何在我的 Flutter 应用程序中将键盘上的拉丁字母转换为 Thaana Unicode

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以将拉丁字母转换为Thaana 字母,也可以创建自己的自定义键盘。

    将拉丁语转换为 Thaana

    您可以使用TextFieldonChanged 参数获取当前输入,然后使用带有Mapswitch 语句的循环将拉丁文本转换为Thaana。

    这是一个粗略的例子:

    String _latinToThaana(String latinText) {
      final thaana = StringBuffer();
      for (var codeUnit in latinText.codeUnits) {
        final latinChar = String.fromCharCode(codeUnit);
        if (latinChar == 'a') {
          thaana.write('އަ‎');
        } else if (latinChar == 'b') {
          thaana.write('ބ‎');
        }
      }
      return thaana.toString();
    } 
    

    使用长 if-else 链肯定不是最好的方法,但它显示了一种开始方法。不过,这种特殊方法不能很好地处理双字母组合。

    另一种方法可能是进行搜索和替换:

    String _latinToThaana(String latinText) {
      latinText
          .replaceAll('aa', 'އާ')
          .replaceAll('a', 'އަ‎')
          .replaceAll('b', 'ބ');
    }
    

    只要你在单打之前替换双打就可以了。

    自定义键盘

    或者,您可以使用所需的字符和布局创建应用内键盘。可以参考蒙古语键盘here

    如果你只想在TextField 有焦点时显示键盘,你可以监听焦点的变化。见this answer

    【讨论】:

    • 谢谢,你能告诉更多关于将拉丁语转换为 Thaana 的信息吗?我已经尝试实现自定义键盘,问题是它现在总是显示在屏幕上,我如何才能仅在单击 TextField 时调用键盘?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多