aşağıda kod kısmım var bu şekilde bilgileri profil sayfasında göstermek istiyorum ama olmuyor, yardımcı olursanız sevinirim.

  String? email = '';
  String? hospital = '';

  Future _getDataFromDatabase() async {
    await FirebaseFirestore.instance
        .collection("users")
        .doc(FirebaseAuth.instance.currentUser!.uid)
        .get()
        .then((snapshot) async {
      if (snapshot.exists) {
        setState(() {
          email = snapshot.data()!["mail"];
          name = snapshot.data()!["name"];
          hospital = snapshot.data()!["hospital"];
        });
      }
    });
  }


  body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            SizedBox(height: 170.0),
            ProfileInfoCard(
              title: 'Adı:',
              /* data: FirebaseAuth.instance.currentUser?.displayName ?? '', */
              data: name!,
            ),
            ProfileInfoCard(
              title: 'E-posta:',
              /* data: FirebaseAuth.instance.currentUser?.email ?? '', */
              data: email!,
            ),
            ProfileInfoCard(
              title: 'Hastane:',
              data: hospital!,
              /* data: userHospital, */
            ),
            Text(
              'Name: ' + name!,
            )
          ],
        ),
      ),

fyt19 _getDataFromDatabase metodunu çağırıyor musun? nerede nasıl çağırıyorsun?

HseyinAkkaya

import 'package:flutter/material.dart';
import 'package:login_screen/screens/alt_menu.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class ProfilePage extends StatefulWidget {
  const ProfilePage({Key? key}) : super(key: key);

  @override
  _ProfilePageState createState() => _ProfilePageState();
}

class _ProfilePageState extends State<ProfilePage> {
  int _selectedIndex = 3; // Varsayılan olarak Profil sayfası seçili
  String? name = '';
  String? email = '';
  String? hospital = '';
  String? userName = FirebaseAuth.instance.currentUser?.displayName;
  // Kullanıcı adını saklamak için değişken
  String userHospital = ''; // Hastane bilgisini saklamak için değişken

  Future _getDataFromDatabase() async {
    await FirebaseFirestore.instance
        .collection("users")
        .doc(FirebaseAuth.instance.currentUser!.uid)
        .get()
        .then((snapshot) async {
      if (snapshot.exists) {
        setState(() {
          email = snapshot.data()!["mail"];
          name = snapshot.data()!["name"];
          hospital = snapshot.data()!["hospital"];
        });
      }
    });
  }

  void _onItemTapped(int index1) {
    setState(() {
      _selectedIndex = index1;
    });
  }

  @override
  void initState() {
    super.initState();
    _loadUserData();
  }

  Future<void> _loadUserData() async {
    User? user = FirebaseAuth.instance.currentUser;

    if (user != null) {
      // Firebase Firestore'dan kullanıcı verilerini çekme
      DocumentSnapshot userSnapshot = await FirebaseFirestore.instance
          .collection('users')
          .doc(user.uid)
          .get();

      if (userSnapshot.exists) {
        setState(() {
          userName = userSnapshot['name'] ??
              ''; // Firestore'daki 'name' alanından adı çekme
          userHospital = userSnapshot['hospital'] ??
              ''; // Firestore'daki 'hospital' alanından hastane bilgisini çekme
        });
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Profil'),
        backgroundColor: Color.fromARGB(248, 221, 133, 1),
      ),
      /* backgroundColor: Colors.white, */
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            SizedBox(height: 170.0),
            ProfileInfoCard(
              title: 'Adı:',
              /* data: FirebaseAuth.instance.currentUser?.displayName ?? '', */

              data: name!,
            ),
            ProfileInfoCard(
              title: 'E-posta:',
              data: FirebaseAuth.instance.currentUser?.email ?? '',
              /* data: email!, */
            ),
            ProfileInfoCard(
              title: 'Hastane:',
              data: hospital!,
              /* data: userHospital, */
            ),
          ],
        ),
      ),
      bottomNavigationBar: BottomNavigationMenu(
        selectedIndex: _selectedIndex,
        onItemTapped: _onItemTapped,
      ),
    );
  }
}

class ProfileInfoCard extends StatelessWidget {
  final String title;
  final String data;

  const ProfileInfoCard({
    required this.title,
    required this.data,
  });

  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 2.0,
      margin: EdgeInsets.symmetric(vertical: 8.0),
      child: Padding(
        padding: EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              title,
              style: TextStyle(
                fontWeight: FontWeight.bold,
                fontSize: 16.0,
              ),
            ),
            SizedBox(height: 8.0),
            Text(
              data,
              style: TextStyle(fontSize: 14.0),
            ),
          ],
        ),
      ),
    );
  }
}

kod kısmı bu şekilde

fyt19


@override
  void initState() {
    super.initState();
    _loadUserData();
    _getDataFromDatabase() ;
  }

Bu şekilde deneyin.

Write a Reply...