🙂

Flutter AlertDialog での画面遷移でエラーが出る場合

2022/06/25に公開

初めに

データの削除機能を、AlertDialogを使って実装した際に
「削除をしますか?」→「はい」or「いいえ」を選択後の画面遷移でエラーが出た為、解決方法の記述です。

解決方法

「はい」「いいえ」等の選択肢を記述しているTextButtonにカーソールを合わせて、
command と .(ドット) を押すと選択肢が出てきます。
その中の、Wrap with builderを選択して、TextButtonBuilderでwrapをしてあげる事で、エラーは消えました!

元のエラーが出たコード

   return AlertDialog(
     title: Text("削除の確認"),
     content: Text("『${book.title}』を削除しますか?"),
     actions: [
       TextButton(
         child: Text("いいえ"),
         onPressed: () => Navigator.pop(context),
       ),
       TextButton(
         child: Text("はい"),
         onPressed: () async {
           await model.delete(book);
           Navigator.pop(context);
       );

エラー解決後のコード

      return AlertDialog(
        title: Text("削除の確認"),
        content: Text("『${image.title}』を削除しますか?"),
        actions: [
          Builder(
            builder: (context) {
              return TextButton(
                child: Text("いいえ"),
                onPressed: () => Navigator.pop(context),
              );
            }
          ),
          Builder(
            builder: (context) {
              return TextButton(
                child: Text("はい"),
                onPressed: () async{
                  //modelで削除
                  await model.delete(image);
                  Navigator.pop(context);
              );

終わりに

今回下記の記事を参考にエラーを解決しております。
エラーの原因まで理解したい方は、ぜひ参考にしてください。
https://zenn.dev/ryouhei_furugen/articles/2fa82ba62c88da

Discussion