dart - 如何在Dart中将int转换为字符串?

标签 dart

因此,目前,我有一个由柜台代表的数字。该数字是递增的,并且会不断变化。我的目标是每3位数字添加一个逗号,以使该数字在我的应用中更具可读性。我遇到的唯一问题是

String number = counter.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), 
                                            (Match m) => '${m[1]},');
拒绝将整数counter用作int。在通过运行之前,如何将int counter转换为String middle
String number = middle.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), 
                                       (Match m) => '${m[1]},');
我的目标是这样的:

counter = 1000;

middle = "1000";

number = "1,000";


我当前的解决方案还能工作吗?如果没有,如何更改代码以实现目标?
更新:
这是我的代码:
class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int counter = 0;

  void _incrementCounter() {
    setState(() {
      if (counter > 99999999) {
        //WinLandingPage();
      } else if (counter >= 99000000) {
        counter++;
      } else if (counter > 990000) {
        counter += 1000000;
      } else if (counter > 9900) {
        counter += 10000;
      } else if (counter > 99) {
        counter += 100;
      } else counter++;
    });
  }

    //BELOW is where the format is taking place, and I have no idea how to 
    //get this part working. This is my broken attempt. 

  var f = new NumberFormat("#,###,###,###", "en_US");
  var number = f.format(counter);

    //What am I doing wrong here?

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar (
        title: new Text(widget.title),
      ),
      body: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text(
              'Try to get $number to 100,000,000.',
            ),
            new Text(
              '$number',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: new FloatingActionButton(
        onPressed: _incrementCounter,
        backgroundColor: Colors.pinkAccent,
        tooltip: 'Increment',
        child: new Icon(Icons.add),
      ),
    );
  }
}
我在这段代码中做错了什么?我对Dart不太熟悉,但是我正在竭尽全力从你们的尝试,错误和支持中找出问题。

最佳答案

您可以使用NumberFormat包中的intl来执行此操作

README.md中的一个示例

var f = new NumberFormat("###.0#", "en_US");
  print(f.format(12.345));
    ==> 12.34 

你的例子可能是
var f = new NumberFormat("#,###", "en_US");
  print(f.format(1000));
    ==> 1,000 

关于dart - 如何在Dart中将int转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49200533/

相关文章:

dart - 如何使用旧版本的 Dart 编辑器

if-statement - 为什么使用三元运算符会出现错误?

android - Flutter 致命异常 : java. lang.RuntimeException : Failure delivering result ResultInfo{who=null, request=1, result=0, data=Intent

sorting - 如何使用 Dart 对列表进行排序?

dart - 从其他对象直接访问@observable 变量

dart - 多个小部件使用相同的 GlobalKey

Dart 抽象可选参数

dart - WebStorm-Dart导入错误

dart - float 操作按钮 : how to change the splash color and highlight color like in a RaisedButton?

multithreading - 如何同时启动多个 Future 以填充单个 FutureBuilder ListView?