我正在渲染 <Text>
Flutter 应用程序中的节点类似于:
We have total ${_summary['bookCount']} books.
_summary
通过远程 API 和 bookCount
检索是返回的 JSON 字段之一。通常超过 1,000 个。
如果我这样显示图书数量,它就是一个普通的 1234
.我想让它显示为 1,234
.
目前,我必须使用一些格式化程序手动修改该字段,但这很麻烦。
我正在寻找类似的东西:
We have total ${myNumberFormat(_summary['bookCount'])} books.
语法,其中 myNumberFormat 是一个函数。
在我之前的 PHP 和 Twig 编程中,这可以通过过滤器来完成。
非常感谢您的意见。
更新
@raju-bitter
这个解决方案是我所知道的并且是绝对正确的。我正在寻找的是一个内联“过滤器”。
使用这个解决方案,我不喜欢一些事情,其中最重要的是,我必须将我的一行文本分成几个部分:
We have {XXX} books, accumulating to {YYY} pages, and {ZZZ} word counts.
这句话将至少分成 7 个部分,以便每个数字文本部分可以通过 formatter
格式化然后包裹在周围<Text>
.
我正在尝试看看是否有更直接的方法可以做到这一点。
最佳答案
有一个用于格式化数字的 Dart 包,Dart intl package .要使用该包,请将以下行添加到 Dart 依赖项中:pubspec.yaml
文件:
intl: ^0.17.0
这是我的依赖项与该行的样子:
dependencies:
flutter:
sdk: flutter
intl: ^0.17.0
在 IntelliJ 中单击 packages get,或从命令行运行 flutter packages get
。
确保你的类导入 intl
包:
import 'package:intl/intl.dart' as intl;
在您的代码中,您可以使用 NumberFormat 类进行格式化:
final formatter = intl.NumberFormat.decimalPattern().format(1234) // formatted number will be: 1,234
完整的有状态小部件示例:
class NumberFormatExample extends StatefulWidget {
@override
_NumberFormatExampleState createState() => new _NumberFormatExampleState();
}
class _NumberFormatExampleState extends State<NumberFormatExample> {
final formatter = intl.NumberFormat.decimalPattern();
int theValue = 1234;
@override
Widget build(BuildContext context) {
return new Text(formatter.format(theValue));
}
}
关于dart - 我可以在 <Text> 中呈现数字之前对其进行格式化吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634478/