Saya ingin mendapatkan nama pengguna yang saat ini masuk dari database real-time firebase. Saya menyimpan informasi tentang pendaftaran pengguna. Saya menggunakan Future Builder dan juga mencetak nama di terminal tetapi saya tidak dapat menampilkan nama pengguna di laci Navigasi. Mohon bantu saya di mana saya melakukan kesalahan karena saya baru mengenal Flutter. Terima kasih sebelumnya!

Kode untuk fungsi:

Future<String> getUsername() async {
    final ref = FirebaseDatabase.instance.reference();
    User cuser = await firebaseAuth.currentUser;

    ref.child('User_data').child(cuser.uid).once().then((DataSnapshot snap) {
      final String userName = snap.value['name'].toString();
      print(userName);
      return userName;
    });
  }

Kode tempat saya menggunakan Builder:

Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    FutureBuilder<String>(
                      future: getUsername(),
                      builder: (context, snapshot) {
                        if (snapshot.hasData) {
                          return Text(
                            snapshot.data,
                            style: TextStyle(
                              fontFamily: 'Montserrat',
                              fontSize: 13,
                              color: const Color(0xff000000),
                              fontWeight: FontWeight.w700,
                            ),
                            textAlign: TextAlign.left,
                          );
                        } else {
                          return Text(
                            "Loading data...",
                            style: TextStyle(
                              fontFamily: 'Montserrat',
                              fontSize: 13,
                              color: const Color(0xff000000),
                              fontWeight: FontWeight.w700,
                            ),
                            textAlign: TextAlign.left,
                          );
                        }
                      },
                    ),

Gambar Layar saya:

enter image description here

Basis Data Saya tempat informasi disimpan:

Saya ingin mendapatkan nama pengguna ke-2 ini: Hania Salman dari database

enter image description here

0
Nabia Salman 18 Mei 2021, 20:57

1 menjawab

Jawaban Terbaik

Anda tidak mengembalikan nama pengguna dari fungsi getUsername() Anda. UserName kembali yang Anda tulis adalah untuk fungsi di dalam then() bukan untuk getUsername(). Jadi seharusnya seperti ini

Future<String> getUsername() async {
    final ref = FirebaseDatabase.instance.reference();
    User cuser = await firebaseAuth.currentUser;

    return ref.child('User_data').child(cuser.uid).once().then((DataSnapshot snap) {
      final String userName = snap.value['name'].toString();
      print(userName);
      return userName;
    });
  }
1
Daniyal Dolare 18 Mei 2021, 18:21