异步编程

Future、Stream

Future

future.dart
Future fetchUser() async {
  await Future.delayed(Duration(seconds: 1));
  return 'User Data';
}

void main() async {
  var user = await fetchUser();
  print(user);
  fetchUser().then((data) => print('Then: $data'));
}

Stream

stream.dart
Stream countStream(int max) async* {
  for (int i = 1; i <= max; i++) {
    await Future.delayed(Duration(seconds: 1));
    yield i;
  }
}

void main() {
  countStream(3).listen((v) => print('Received: $v'));
}