MaterialApp ile Sayfalar Arası Veri Aktarımı

CanaBBis

Yeni üye
24 Nis 2021
43
0


sb24p8.png



Merhaba değerli TürkHackTeam ailesi, bugün ki konumda sizlere MaterialApp ile sayfalar arası veri aktarımından bahsedeceğim hemen konuya geçelim

hk6hiv.png


MaterialApp içinde rota tanımlamadığımızda, navigator.push ile sayfalar arasında veri aktarımı yapmak istediğimizde aşağıdaki yolu izleyeceğiz.

1)Stateful widget ile iki ekran oluşturduk.

hk6hiv.png


2)İkinci ekranımızda (ProfilEkrani) iki değişken tanımladık. Değişkenlerimizi bu kez ilk class'ın içine, ilk Override ifadesinin üstüne yazıyoruz. Bir de constructor oluşturduk. Böylece birinci ekrandan (GirisEkrani), ProfilEkrani'na parametre göndererek, değerlerin buraya aktarılmasını sağlacağız.

hk6hiv.png


3)Buraya gelen değerlere de;

Kod:
widget.kullaniciAdi

widget.sifre

diyerek erişiyoruz ve Text widget içerisinde gösteriyoruz.

İkinci ekranımız:

Kod:
class ProfilEkrani extends StatefulWidget {
  
  String kullaniciAdi, sifre;
  ProfilEkrani({this.kullaniciAdi, this.sifre});

   [USER=931120]Override[/USER]
  _ProfilEkraniState createState() => _ProfilEkraniState();
}

class _ProfilEkraniState extends State<ProfilEkrani> {
  cikisYap() {
    Navigator.pop(context);
  }

   [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              onPressed: cikisYap,
              child: Text("Çıkış Yap"),
            ),
            Text("Kullanıcı Adınız: ${widget.kullaniciAdi}"),
            Text("Şifreniz: ${widget.sifre}"),
          ],
        ),
      ),
    );
  }
}

Giriş ekranımızda kullandığımız navigator.push için de aşağıdaki değişikliği yapmamız yeterli. ProfilEkrani'ni verdiğimizde, ProfilEkrani içerisinde tanımladığımız değişkenlere burada değer veriyoruz.

Kod:
girisYap() {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => ProfilEkrani(
          kullaniciAdi: t1.text,
          sifre: t2.text,
        ),
      ),
    );
  }


Kodun tamamı:

hk6hiv.png


Kod:
import 'package:flutter/material.dart';

v o i d main() => runApp(MyApp());

class MyApp extends StatelessWidget {
   [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return MaterialApp(
      home: GirisEkrani(),
    );
  }
}

class GirisEkrani extends StatefulWidget {
   [USER=931120]Override[/USER]
  _GirisEkraniState createState() => _GirisEkraniState();
}

class _GirisEkraniState extends State<GirisEkrani> {
  TextEditingController t1 = TextEditingController();
  TextEditingController t2 = TextEditingController();

  girisYap() {
    if (t1.text == "admin" && t2.text == "1234") {
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => ProfilEkrani(
            kullaniciAdi: t1.text,
            sifre: t2.text,
          ),
        ),
      );
    } else {
      showDialog(
        context: context,
        builder: (BuildContext context) {
          return AlertDialog(
            title: new Text("Yanlış kullanıcı adı veya şifre"),
            content: new Text("Lütfen giriş bilgilerinizi gözden geçirin."),
            actions: <Widget>[
              new FlatButton(
                child: new Text("Kapat"),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ],
          );
        },
      );
    }
  }

   [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Giriş Ekrani")),
      body: Container(
        margin: EdgeInsets.all(100),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextFormField(
              decoration: InputDecoration(hintText: "Kullanıcı Adı"),
              controller: t1,
            ),
            TextFormField(
              decoration: InputDecoration(hintText: "Şifre"),
              controller: t2,
            ),
            RaisedButton(
                onPressed: () {
                  girisYap();
                },
                child: Text("Giriş Yap")),
          ],
        ),
      ),
    );
  }
}

class ProfilEkrani extends StatefulWidget {
  String kullaniciAdi, sifre;
  ProfilEkrani({this.kullaniciAdi, this.sifre});

   [USER=931120]Override[/USER]
  _ProfilEkraniState createState() => _ProfilEkraniState();
}

class _ProfilEkraniState extends State<ProfilEkrani> {
  cikisYap() {
    Navigator.pop(context);
  }

   [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              onPressed: cikisYap,
              child: Text("Çıkış Yap"),
            ),
            Text("Kullanıcı Adınız: ${widget.kullaniciAdi}"),
            Text("Şifreniz: ${widget.sifre}"),
          ],
        ),
      ),
    );
  }
}


Bir konunun daha sonuna geldik. Okuduğunuz için teşekkürler.



 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.