我仍在寻找一种更好的方法来定位Dart/Flutter中的百分比值。到目前为止,我只是用以下代码将一个百分比值转换为一个合适的字符串:'${(_percentage * 100).toStringAsFixed(3)}%'
对于百分比值,例如65.7893,您将得到以下字符串:65.789%
。这对英语来说很好,但对其他语言来说就不行了。
例如,对于德语,字符串应如下所示:65,789 %
解决方案
多亏了这些有用的提示,我现在创建了以下包装器函数。
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
_generatePercentString(percentValue) {
var systemLocale = Localizations.localeOf(context);
var numberFormatter = NumberFormat.decimalPercentPattern(
locale: systemLocale.languageCode,
decimalDigits: 3,
);
var percentString = numberFormatter.format(percentValue);
return percentString;
}
首先将intl包添加到您的pubspec.yaml 中
使用Localisation和NumberFormat类。
Locale myLocale = Localizations.localeOf(context); /* gets the locale based on system language*/
String languageCode = myLocale.languageCode;
print(NumberFormat.percentPattern(languageCode).format (60.23));
您可以在此处参考支持的区域设置:https://www.woolha.com/tutorials/dart-formatting-currency-with-numberformat#supported-区域