flutter - 如何在 Flutter 中将英文数字转换为另一种语言数字(我使用的是孟加拉语)?
问题描述
我将英文数字(例如 123)作为整数,现在我想以另一种语言形式(例如১২৩)显示它。
我使用了一个函数,它也有效。但是,它不能在同一个有状态的类中多次使用。它适用于第一个Text小部件,但不适用于第二个
Column(
children<Widget>:[
Text(
"${convertNumber(123)}"
),
Text(
"${convertNumber(5630)}"
)
]
)
String convertNumber(int eng){
String bengali = '';
for(int i = 0; i < eng.toString().length; i ++){
setState(() {
switch(eng.toString()[i]){
case '1':
bengali = bengali + '১';
break;
case '2':
bengali = bengali + '২';
break;
case '3':
bengali = bengali + '৩';
break;
case '4':
bengali = bengali + '৪';
break;
case '5':
bengali = bengali + '৫';
break;
case '6':
bengali = bengali + '৬';
break;
case '7':
bengali = bengali + '৭';
break;
case '8':
bengali = bengali + '৮';
break;
case '9':
bengali = bengali + '৯';
break;
default:
bengali = bengali + '0';
}
});
}
return bengali;
}
虽然我将它用于同一有状态类中的其他数字,但它不起作用。错误是:
构建期间调用的 setState() 或 markNeedsBuild() 此 LowerHalf 小部件无法标记为需要构建,因为框架已经在构建小部件的过程中。仅当其祖先之一当前正在构建时,小部件才能在构建阶段标记为需要构建。这个例外是允许的,因为框架在子组件之前构建父窗口小部件,这意味着将始终构建脏后代。否则,框架可能不会在此构建阶段访问此小部件。调用 setState() 或 markNeedsBuild() 的小部件是:LowerHalf
解决方案
不要在你的转换函数中调用setState,只需使用你的函数来获取一个值。
调用setState函数后,小部件会重建。在您的情况下,构建调用setState再次触发构建。
推荐阅读
- php - 调度运行时无法调度 Laravel 事件
- windows - 通过批处理文件从注册表中获取值,并与其他子文件夹比较该值是否存在并进行导出
- snowflake-cloud-data-platform - 变体表中的横向展平雪花
- angular - Angular 在放置数据时两次发送相同的请求
- html - 不使用相对位置或负边距的图像上的文本
- python - 姜戈芹菜节拍
- python - 我的 Choropleth 地图加载卡住并且永远无法完成?
- javascript - 有没有办法从 JavaScript 更新 MVC 5 ViewModel
- php - PHP:在字符串中查找数字并在每个数字之间添加空格
- react-native - 在 expo 客户端运行应用程序中反应本机错误:尝试在空对象引用上调用虚拟方法“double java.lang.Double.doubleValue()”