Blog Sayfalarının Liste Halinde Gösterilmesi

CanaBBis

Yeni üye
24 Nis 2021
43
0



sb24p8.png


Merhaba değerli TürkHackTeam ailesi bugün ki konumuzda sizlere Kullanıcı Girişli Blog Uygulaması konumuzun ikinci bölümüne ait olacak Liste Halinde göstermeden bahsedeceğim.




Blog Sayfalarının Liste Halinde Gösterilmesi
cx5pw9.gif


Uygulamanızda tablo olarak göstermek istediğiniz Firestore verileri olursa aşağıdaki kodu kullanabilirsiniz. StreamBuilder ile, ListView() yerine DataTable() widget döndürdük.

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

class AnaSayfa extends StatelessWidget {
  [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Anasayfa")),
      body: VeriTablosu(),
    );
  }
}

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

 [USER=931120]Override[/USER]
class VeriTablosuState extends State<VeriTablosu> {
  [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseFirestore.instance.collection('Yazilar').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) return new Text('Loading...');
        return new DataTable(
          columns: <DataColumn>[
            new DataColumn(label: Text('Başlık')),
            new DataColumn(label: Text('İçerik')),
          ],
          rows: _createRows(snapshot.data),
        );
      },
    );
  }

  List<DataRow> _createRows(QuerySnapshot snapshot) {
    List<DataRow> newList =
        snapshot.docs.map((********Snapshot ********Snapshot) {
      return new DataRow(cells: [
        DataCell(Text(********Snapshot.data()['baslik'].toString())),
        DataCell(Text(********Snapshot.data()['icerik'].toString())),
      ]);
    }).toList();

    return newList;
  }
}


Kullanıcıdan ID bilgisi ve E-posta alma:


Kod:
FirebaseAuth auth = FirebaseAuth.instance;

print(auth.currentUser.uid);

print(auth.currentUser.email);


.dart'ın son hali:

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

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

class _YaziEkraniState extends State<YaziEkrani> {
  TextEditingController t1 = TextEditingController();
  TextEditingController t2 = TextEditingController();

  var gelenYaziBasligi = "";
  var gelenYaziIcerigi = "";

  FirebaseAuth auth = FirebaseAuth.instance;

  yaziEkle() {
    FirebaseFirestore.instance.collection("Yazilar").doc(t1.text).set({
      'kullaniciid': auth.currentUser.uid,
      'baslik': t1.text,
      'icerik': t2.text
    }).whenComplete(() => print("Yazı eklendi"));
  }

  yaziGuncelle() {
    FirebaseFirestore.instance
        .collection("Yazilar")
        .doc(t1.text)
        .update({'baslik': t1.text, 'icerik': t2.text}).whenComplete(
            () => print("Yazı güncellendi"));
  }

  yaziSil() {
    FirebaseFirestore.instance.collection("Yazilar").doc(t1.text).delete();
  }

  yaziGetir() {
    FirebaseFirestore.instance
        .collection("Yazilar")
        .doc(t1.text)
        .get()
        .then((gelenVeri) {
      setState(() {
        gelenYaziBasligi = gelenVeri.data()['baslik'];
        gelenYaziIcerigi = gelenVeri.data()['icerik'];
      });
    });
  }

  [USER=931120]Override[/USER]
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Yazı Ekranı"),
      ),
      body: Container(
        margin: EdgeInsets.all(40),
        child: Center(
          child: Column(
            children: [
              TextField(
                controller: t1,
              ),
              TextField(
                controller: t2,
              ),
              Row(
                children: [
                  RaisedButton(child: Text("Ekle"), onPressed: yaziEkle),
                  RaisedButton(child: Text("Günclle"), onPressed: yaziGuncelle),
                  RaisedButton(child: Text("Sil"), onPressed: yaziSil),
                  RaisedButton(child: Text("Getir"), onPressed: yaziGetir),
                ],
              ),
              ListTile(
                title: Text(gelenYaziBasligi),
                subtitle: Text(gelenYaziIcerigi),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Bir konunun daha sonuna geldik.Esen Kalın


 
Ü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.