Flutter da bir önceki ekrana nasıl veri gönderilir?

Bazı durumlarda bir ekrandaki verileri başka bir ekrana döndürmek isteyebilirsiniz. Örneğin, bir kullanıcıya iki seçenek sunan yeni bir ekranınızın olduğunu varsayalım. Kullanıcı bir seçeneğe tıkladığında, bu bilgi üzerinde hareket edebilmesi için kul…


This content originally appeared on DEV Community and was authored by Gülsen 🦋

Bazı durumlarda bir ekrandaki verileri başka bir ekrana döndürmek isteyebilirsiniz. Örneğin, bir kullanıcıya iki seçenek sunan yeni bir ekranınızın olduğunu varsayalım. Kullanıcı bir seçeneğe tıkladığında, bu bilgi üzerinde hareket edebilmesi için kullanıcının seçimiyle ilgili ilk ekranını bilgilendirmek isteyebilirsiniz.

Bunu Navigator.pop() method'unu kullanarak yapabiliriz:

ÖRNEK

1. Ana ekranı tanımlayın

Bu örnekte:

Ana ekranda bir buton görüntülenir. Butona tıklanıldığında, SelectionScreen isimli ekran açılır.

class HomeScreen extends StatelessWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Returning Data Demo'),
      ),
      body: const Center(
        child: SelectionButton(),
      ),
    );
  }
}

2. Tıklanıldığında SelectionScreen ekranını açan SelectionButton'u oluşturun

class SelectionButton extends StatelessWidget {
  const SelectionButton({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        _navigateAndDisplaySelection(context);
      },
      child: const Text('Pick an option, any option!'),
    );
  }

  void _navigateAndDisplaySelection(BuildContext context) async {
    final result = await Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => const SelectionScreen()),
    );
  }
}

3. İki buton içeren bir SelectionScreen ekranını oluşturun

Kullanıcı bir butona tıkladığında seçim ekranını kapanır ve ana ekrana kullanıcının hangi butona tıkladığının bilgisi iletilir.

class SelectionScreen extends StatelessWidget {
  const SelectionScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Pick an option'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: ElevatedButton(
                onPressed: () {
                },
                child: const Text('Yep!'),
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: ElevatedButton(
                onPressed: () {
                },
                child: const Text('Nope.'),
              ),
            )
          ],
        ),
      ),
    );
  }
}
  1. Yep butonuna tıklanıldığında SelectionScreen ekranını kapatın

Verileri ilk ekrana döndürmek için, result olarak adlandırılan isteğe bağlı ikinci bir bağımsız değişkeni kabul eden Navigator.pop() method'unu kullanabilirsiniz.

Yep button

Bu kod butona tıklanıldığında SelectionScreen ekranını kapatır ve HomeScreen ekranına 'Yep!' metnini gönderir.

ElevatedButton(
  onPressed: () {
    Navigator.pop(context, 'Yep!');
  },
  child: const Text('Yep!'),
)

Nope button

Bu kod butona tıklanıldığında SelectionScreen ekranını kapatır ve HomeScreen ekranına 'Nope.' metnini gönderir.

ElevatedButton(
  onPressed: () {
    Navigator.pop(context, 'Nope.');
  },
  child: const Text('Nope.'),
)

5. Seçimle birlikte ana ekranda bir snackbar gösterin

Değerlerimizi döndürdüğümüze göre artık, SelectionButton'da _navigateAndDisplaySelection() yöntemini kullanarak sonucu görüntüleyen bir snackbar gösterebiliriz:

SelectionScreen ekranını kapatırken gönderdiğimiz değerler aşağıdaki result değişkenine depolanır.

void _navigateAndDisplaySelection(BuildContext context) async {
  final result = await Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => const SelectionScreen()),
  );

  ScaffoldMessenger.of(context)
    ..removeCurrentSnackBar()
    ..showSnackBar(SnackBar(content: Text('$result')));
}

Bu yazıda Navigator.pop() yöntemini kullanarak bir üst ekrandan bir önceki ekrana nasıl değer gönderebileceğimizi öğrendik.

reference


This content originally appeared on DEV Community and was authored by Gülsen 🦋


Print Share Comment Cite Upload Translate Updates
APA

Gülsen 🦋 | Sciencx (2022-01-30T11:36:48+00:00) Flutter da bir önceki ekrana nasıl veri gönderilir?. Retrieved from https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/

MLA
" » Flutter da bir önceki ekrana nasıl veri gönderilir?." Gülsen 🦋 | Sciencx - Sunday January 30, 2022, https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/
HARVARD
Gülsen 🦋 | Sciencx Sunday January 30, 2022 » Flutter da bir önceki ekrana nasıl veri gönderilir?., viewed ,<https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/>
VANCOUVER
Gülsen 🦋 | Sciencx - » Flutter da bir önceki ekrana nasıl veri gönderilir?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/
CHICAGO
" » Flutter da bir önceki ekrana nasıl veri gönderilir?." Gülsen 🦋 | Sciencx - Accessed . https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/
IEEE
" » Flutter da bir önceki ekrana nasıl veri gönderilir?." Gülsen 🦋 | Sciencx [Online]. Available: https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/. [Accessed: ]
rf:citation
» Flutter da bir önceki ekrana nasıl veri gönderilir? | Gülsen 🦋 | Sciencx | https://www.scien.cx/2022/01/30/flutter-da-bir-onceki-ekrana-nasil-veri-gonderilir/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.