dart2 (flutter)에서 async 함수가 Future를 반환한다는 곳의 사양 확인 메모
It is a compile-time error if the declared return type of a function marked async is not a supertype of Future for some type T.
It is a compile-time error if the declared return type of a function marked sync* is not a supertype of Iterable for some type T.
It is a compile-time error if the declared return type of a function marked async* is not a supertype of Stream for some type T.
async로 표시된 함수의 선언된 리턴 값 유형이 특정 유형 T에 대한 Future 수퍼타입이 아닌 경우 컴파일 시간 오류가 발생합니다.
sync*로 표시된 함수의 선언된 반환 값 유형이 특정 유형 T에 대해 반복 가능한 수퍼타입이 아닌 경우 컴파일 시간 오류가 발생합니다.
async*로 표시된 함수의 선언된 리턴 값의 유형이 일부 유형 T에 대해 Stream의 수퍼타입이 아닌 경우 컴파일 시간 오류가 발생합니다.
컴파일 에러가 되기 때문에 그런 일로.
void main() async {
final ft1 = timeAfter1();
print("ft1=$ft1");
ft1.then((t1) {
print("t1=$t1");
});
final ft2 = timeAfter2a();
print("ft2=$ft2");
ft2.then((t2) {
print("t2=$t2");
});
final fft3 = timeAfter3b();
print("fft3=$fft3");
fft3.then((ft) {
print("ft=$ft");
ft.then((t) {
print("t=$t");
});
});
}
Future<String> timeAfter1() {
Future<String> ft = Future.delayed(Duration(seconds: 1), () {
return DateTime.now().toIso8601String();
});
return ft;
}
Future<String> timeAfter2a() async {
String t = DateTime.now().toIso8601String();
return t; // 返り値の型はFuture<String>だけどreturnしている型はString。自動でFuture<T>にラップされる。
}
/*
Future<String> timeAfter2b() {
String t = DateTime.now().toIso8601String();
return t; // asyncつけないともちろんだめ
}
*/
/*
Future<Future<String>> timeAfter3a() async {
Future<String> ft = Future.delayed(Duration(seconds: 1), () {
return DateTime.now().toIso8601String();
});
return ft; // Future<String> -> Future<Future<String>> のようにラップされることはない。
}
*/
Future<Future<String>> timeAfter3b() async {
Future<Future<String>> fft = Future.delayed(Duration(seconds: 1), () {
Future<String> ft = Future.delayed(Duration(seconds: 1), () {
return DateTime.now().toIso8601String();
});
return ft;
});
return fft;
}
% dart dart_async.dart
ft1=Instance of 'Future<String>'
ft2=Instance of 'Future<String>'
fft3=Instance of 'Future<Future<String>>'
t2=2020-12-17T09:03:22.237512
t1=2020-12-17T09:03:23.243016
ft=Instance of 'Future<String>'
t=2020-12-17T09:03:24.256934
Reference
이 문제에 관하여(dart2 (flutter)에서 async 함수가 Future를 반환한다는 곳의 사양 확인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takeru@github/items/72907aeb3eb2ffee3848텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)