【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part30 Dartの特徴
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part30 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part29 Dartの特徴
引き続きDartの特徴です。
Future
の続きになります。
Dartの特徴
Future
本書には完全なサンプルの記載がなかったので必死にサンプルを作成しました(笑
class User {
String name = '';
int company = 1;
User(this.name);
}
class Company {
int id;
Company(this.id);
}
Future<User> fetchUser(String id) {
return Future((){
// ★
return User(id);
});
}
Future<Company> fetchCompany(int companyId) {
return Future(() {
// ▲
return Company(companyId);
});
}
// fetchCompanyメソッドにおいてはこれでもOK!
// 起点となるメソッドがFutureを返すようにしていればよいということかな?
// ※今回の起点はfetchUser
//Company fetchCompany(int companyId) {
// return Company(companyId);
//}
void main() {
print('1');
fetchUser("raika").then((User user) {
// user変数は★のオブジェクトが入っている
print('3');
return fetchCompany(user.company);
}).then((Company company) {
// company変数には▲のオブジェクトが入っている。
// 成功した処理
print('4');
}).catchError((error){
// エラー処理
print('4');
}).whenComplete((){
// どちらかが終わったら呼ばれる
print('5');
});
print('2');
}
感覚的にはtry~catch~finalyでしょうかね。
tryは連続(チェーン?)できるようです。
起点となるメソッドはFutureクラスを返す必要はあるようですが他のメソッドはただのメソッドで良さそうです。
最後に
JavaScriptにpromise
という機構だったか関数がありましたね。
この機構を知った当時ちゃんと学習しておけばよかったと後悔しています。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません