💨

This expression has a type of 'void' so its value can't be used.

2023/02/18に公開

発生した問題

  • 対象のコード
var _result = await createAccount(result.user!.uid);
if(_result == true) {
  result.user!.sendEmailVerification();
  Navigator.push(context, MaterialPageRoute(
    builder: (context) => CheckEmailPage(
      email: emailController.text,
      pass: passController.text
    )
  ));
}

Future<void> createAccount(String uid) async {
    String imagePath = await FunctionUtils.uploadImage(uid, image!);
    Account newAccount = Account(
      id: uid,
      name: nameController.text,
      userId: userIdController.text,
      selfIntroduction: selfIntroductionController.text,
      imagePath: imagePath,
    );
    var _result = await UserFirestore.setUser(newAccount);
    return _result;
  }
  • エラーメッセージ
This expression has a type of 'void' so its value can't be used.

上から1行目, 2行目の_resultに赤線が引かれ、上記のエラーメッセージが出現していました。

解決策

_resultにカーソルを当てて、型を調べてみると、void型でした。
そこで上記のコードのFuture<void>の部分をFuture<dynamic>に変えました。

Future<void> createAccount(String uid) async {
    String imagePath = await FunctionUtils.uploadImage(uid, image!);
    Account newAccount = Account(

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Future<dynamic> createAccount(String uid) async {
    String imagePath = await FunctionUtils.uploadImage(uid, image!);
    Account newAccount = Account(

すると、エラーを消すことができました。
単純なミスでした。

Discussion