【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part30 Dartの特徴

2021年10月12日

基礎 から 学ぶ 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という機構だったか関数がありましたね。
この機構を知った当時ちゃんと学習しておけばよかったと後悔しています。

今日はここまで!