我正在用我的母语Flutter构建一个应用程序。但是,我的语言(马尔代夫使用的Dhivehi(在Flutter本地化包中不受支持。
我曾尝试使用本地化包将其添加为一种新语言,但我没能做到
在我的应用程序中,有一个TextField,用户必须在其中键入Dhivehi字母(Thaana(,以便在应用程序中搜索内容。如何在flutter应用程序中将键盘上的拉丁字母转换为Thaana Unicode?
您可以将拉丁字母转换为Thaana字母,也可以创建自己的自定义键盘。
将拉丁语转换为Thaana
您可以使用TextField
的onChanged
参数来获得当前输入,然后使用带有Map
或switch
语句的循环将拉丁文文本转换为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
有焦点时显示键盘,则可以监听焦点的变化。看看这个答案。