當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Dart Stream.map用法及代碼示例


dart:async 庫中Stream.map 方法的用法介紹如下。

用法:

Stream<S> map<S>(
   S convert(
   T event   
)   
)

將此流的每個元素轉換為新的流事件。

創建一個新流,使用convert 函數將此流的每個元素轉換為新值,並發出結果。

對於此流中的每個數據事件 o ,返回的流會提供一個值為 convert(o) 的數據事件。如果 convert 拋出,則返回的流將其報告為錯誤事件。

錯誤和完成事件原封不動地傳遞給返回的流。

如果此流是,則返回的流是廣播流。 convert 函數在每個偵聽器的每個數據事件中調用一次。如果多次收聽廣播流,則每個訂閱將在每個數據事件上單獨調用convert

transform 不同,此方法不會將流視為單個值的塊。相反,每個事件都獨立於之前和之後的事件進行轉換,這可能並不總是正確的。例如,如果代理對或多字節 UTF-8 編碼被拆分為單獨的事件,並且嘗試獨立地對這些事件進行編碼或解碼,則 UTF-8 編碼或解碼將給出錯誤的結果。

例子:

final stream =
    Stream<int>.periodic(const Duration(seconds: 1), (count) => count)
        .take(5);

final calculationStream =
    stream.map<String>((event) => 'Square: ${event * event}');
calculationStream.forEach(print);
// Square: 0
// Square: 1
// Square: 4
// Square: 9
// Square: 16

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 map<S> method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。