😃

【学び】Futureの使い方

2023/07/17に公開

対象読者

  • Future関連のエラーで詰まった人
  • 未来の自分

環境


Dart SDK version: 3.0.3 (stable) (Wed May 31 15:35:05 2023 +0000) on "macos_arm64"
Flutter 3.10.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 682aa387cf (6 weeks ago)2023-06-05 18:04:56 -0500
Engine • revision 2a3401c9bb
Tools • Dart 3.0.3 • DevTools 2.23.1

結論

  • 戻り値にFutureを付けたいなら、async/awaitを使いましょう!!!


//                                    ↓ここ
test("DBからタスクの一覧を取得する", () async {
    TestWidgetsFlutterBinding.ensureInitialized();
    sqfliteFfiInit();
    databaseFactory = databaseFactoryFfi;
    final driver = TodoDriverImpl();
//                   ↓ここ
    final actual = await driver.getAll();
    List<DriverTask> expected = [];
    
    expect(actual, expected);
});

まとめ

  • このくらい記事のまとめるほどことでもないが、絶対に忘れるので残しておく。
  • だめなコードは以下
  • だめなコードでもコンパイル通っちゃうのが。。。

test("DBからタスクの一覧を取得する", () {
    TestWidgetsFlutterBinding.ensureInitialized();
    sqfliteFfiInit(); // 追加
    databaseFactory = databaseFactoryFfi; // 追加
    final driver = TodoDriverImpl();
    final actual = driver.getAll(); as List<DriverTask>
    List<DriverTask> expected = [];
    
    expect(actual, expected);
});

Discussion