---
# System prepended metadata

title: Dart-Generator 生成器語法紀錄
tags: [Dart]

---

# Dart-Generator 生成器語法紀錄

Dart Generator 分為**同步生成器**與**異步生成器**兩種，用來產生一連串的序列，通常用於服務器
如果是同步，返回的是一個Iterable 物件
如果是異步，返回的是一個Stream 物件

## 同步生成器
### 關鍵詞 sync* 搭配 yield
```dart=
main(){
    var it = naturalsTo(5).iterator;
    while(it.moveNext()){
        print(it.current);
    }
}

Iterable<int> naturalsTo(int n) sync*{
    print('start');
    int k = 0;
    while(k < n){
        yield k++;
    }
    print('end');
}
```


## 異步生成器:
### 關鍵詞 async* 搭配 yield

###### tags: `Dart`