dart - 我可以在 <Text> 中呈现数字之前对其进行格式化吗

标签 dart flutter

我正在渲染 <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/

相关文章:

dart - 如何在 Flutter 小部件测试中等待 future 完成?

flutter - 如何更改 Flutter 中文本字段的字体大小?

dart - 从 const 对象返回 const 值应该是 const 吗?

flutter - 更新列表中的项目Flutter

firebase - 使用特定路径在 Firebase 托管上部署网站

dart - 如何获取异步执行的完整堆栈跟踪

Flutter:全局保存列表的方法是什么,以便在浏览我的应用程序后保持状态?

flutter - 得到错误 `Failed assertion: line 1687 pos 12: ' hasSize '` when render ListTile inside ` Row`

flutter upgrade - 无法在 "/Users/.../.config/flutter"创建目录。 - Flutter 守护进程已终止

firebase - 运行 Gradle 时出错 - gradlew.bat 异常退出(添加 firebase 后出错)