Saya memiliki item daftar ketika ditekan lama mengeksekusi _selectionAlert yang memiliki dua tombol satu untuk menghapus dan satu untuk mengedit (lihat gambar). Hapus berfungsi dengan baik tetapi ketika saya menekan edit itu harus mengeksekusi _editAlert yang seharusnya menampilkan alertDialog lain tetapi ketika saya mengkliknya tidak ada yang terjadi apa masalahnya di sini?
Ini bertanggung jawab untuk menampilkan dialog peringatan di _selectionAlert

TextButton( // refer code bellow
    child: Text('Edit', style: TextStyle(color: Colors.grey)),
        onPressed: (){
            _editAlert();
            Navigator.of(context).pop();
        },
)

Kode di bawah ini berjalan ketika item ditekan lama:

void _selectionAlert(){
      var selItem = AlertDialog(
        title: Text('What you want to do?'),
        content: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            TextButton(       // ignore this it is for deletion this works fine
              child: Text('Delete', style: TextStyle(color: Colors.red)),
              onPressed: (){
                _deleteItem();
                Navigator.of(context).pop();
              },
            ),
            TextButton( 
              child: Text('Edit', style: TextStyle(color: Colors.grey)),
              onPressed: (){
                _editAlert();      // this line should call _editAlert
                Navigator.of(context).pop();
              },
            )
          ],
        ),
      );
      showDialog(
        context: context,
        builder: (BuildContext context){
          return selItem;
      }
    );
  }  

Representasi dari kode di atas: representasi kode di atas flutter dart button dialog flutter-web

0
Deb 19 November 2020, 17:54

1 menjawab

Jawaban Terbaik

Coba tambahkan pernyataan pengembalian pada metode _editAlert Anda

_editAlert(){   // edit alertDialog
    var editItem = AlertDialog(
      title: Text('Edit'),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          TextField(
            decoration: InputDecoration(
              hintText: 'Edit Item',
            ),
            controller: addeditem,
          ),
          TextButton(
            child: Text('Done'),
            onPressed: (){
              _editItem();
              Navigator.of(context).pop();
            }
          )
        ],
      ),
    );
    return showDialog(                //like that
      context: context,
      builder: (BuildContext context){
        return editItem;
      }
    );
  }


Juga cara Anda benar, Anda dapat menggunakan poping untuk menutup pop up sebelumnya.

1
Emin Bilgiç 19 November 2020, 15:18