如何在Flutter中将拉丁字母从键盘转换为Thaana Unicode



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

我曾尝试使用本地化包将其添加为一种新语言,但我没能做到

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

您可以将拉丁字母转换为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', 'ބ');
}

只要你在单打之前换上双打就行了。

自定义键盘

或者,您可以使用所需的字符和布局创建一个应用内键盘。你可以在这里查一下蒙古语键盘作为参考。

如果只想在TextField有焦点时显示键盘,则可以监听焦点的变化。看看这个答案。

最新更新