2017-04-26 51 views
2

渲染我渲染<Text>節點撲應用像之前:我可以格式化了一些它在<Text>

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編程中,可以用過濾器來完成。

非常感謝您的意見。

更新

@拉朱苦

該解決方案是我所知道的,是完全正確的。我正在尋找的是內聯「過濾器」。

通過這個解決方案,幾件事情,我不喜歡,其中最的是,我有我的文字之一襯墊分割成幾個小部分: We have {XXX} books, accumulating to {YYY} pages, and {ZZZ} word counts. 這句話將被打破至7份至少使每個數字文本部分可以通過formatter進行格式化,然後包裝在周圍的<Text>中。

我想看看是否有更直接的方法來做到這一點。

回答

2

有一個格式化數字的Dart包,Dart intl package。要使用該程序包,以下行添加到達特依賴關係:pubspec.yaml文件:

intl: ">=0.14.0" 

這裏就是我的依賴性看起來像行:

dependencies: 
    flutter: 
    sdk: flutter 

    intl: ">=0.14.0" 

點擊包中的IntelliJ得到,或從命令行運行flutter packages get

確保你的類進口intl包:

import 'package:intl/intl.dart';

在代碼中,你可以使用NumberFormat類做格式:

final formatter = new NumberFormat("#,###"); 
    new Text(formatter.format(1234)), // formatted number will be: 1,234 

全狀態部件示例:

class NumberFormatExample extends StatefulWidget { 
    @override 
    _NumberFormatExampleState createState() => new _NumberFormatExampleState(); 
} 

class _NumberFormatExampleState extends State<NumberFormatExample> { 
    final formatter = new NumberFormat("#,###"); 
    int theValue = 1234; 

    @override 
    Widget build(BuildContext context) { 
    return new Text(formatter.format(theValue)); 
    } 
} 
相關問題