问题描述
在我的 Flutter 应用程序中,我使用的是 qcf_bsml 字体,我必须生成十六进制值才能在字体文件中显示相应的单词。为此,我正在使用这个等式: (64396 + Id >= 64434) ? 64429 + 章节编号:64396 + 编号
我使用这个函数将上面的结果转换为十六进制值:
calculatehex(){
final myInteger = (64396 + 1 >= 64434) ? 64429 + 1 : 64396 + 1; //Id is 1: result 64397
final hexString = myInteger.toRadixString(16);
final paddedString = hexString.padLeft(4,'0');
uppercaseString = paddedString.toupperCase();
print(uppercaseString); //displays correct hex value in console :FB8D
}
问题是我只能硬编码文本字段中的十六进制值以显示正确的单词。例如:
new Text('\u{FB8D}',textDirection: TextDirection.rtl,style:TextStyle(fontSize:30.0,fontWeight: FontWeight.w100,fontFamily: 'QCF'),textAlign:TextAlign.center ),// works fine
new Text(uppercaseString,// not showing correct word
我尝试像这样连接字符串,但仍然无法正常工作
new Text(r'\u{'+uppercaseString+'}',
请帮助我理解为什么它显示带有硬编码值的正确单词 '\u' 而不是带有变量。谢谢
解决方法
我通过使用 String.fromCharCode(int.parse()) 并在代码中进行以下更改来解决它:
uppercaseString = paddedString.toUpperCase();
finalhexString ='0x$uppercaseString';
然后:
new Text(String.fromCharCode(int.parse(finalhexString)),textDirection: TextDirection.rtl,style:TextStyle(fontSize:30.0,fontWeight: FontWeight.w100,fontFamily: 'QCF'),textAlign:TextAlign.center ),