Home > Blockchain >  I would like to display my account name and email address using Firestore in the side menu
I would like to display my account name and email address using Firestore in the side menu

Time:01-27

I am currently building an app in Flutter.

I was able to get the account name and email address from Firestore using the second code below.

I am having trouble getting them without some action (such as pressing a button).

I would like to display this as a Text Widget.

Is there a better way to do this?

Code to display the account name↓

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


  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        padding: EdgeInsets.zero,
        children: [
          GestureDetector(
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => account()),
              );
            },
            child:
          UserAccountsDrawerHeader(
            accountName: Text('開発者',style: TextStyle(color: Colors.white),),
            accountEmail: Text('[email protected]',style: TextStyle(color: Colors.white),),
            currentAccountPicture: CircleAvatar(
              child: ClipOval(
                child: Image.network(
                  'https://pbs.twimg.com/profile_images/1494938183448281089/xXIv3xmE_400x400.jpg',
                  width: 90,
                  height: 90,
                  fit: BoxFit.cover,
                ),
              ),
            ),
            decoration: BoxDecoration(
              color: Colors.lightGreen,
              image: DecorationImage(
                image: NetworkImage(
                  'https://pbs.twimg.com/profile_banners/1394312681209749510/1634787753/1500x500',
                ),
                fit: BoxFit.cover,
              ),
            ),
          ),
          ),
          ListTile(
            leading: Icon(Icons.event_available_outlined),
            title: Text('行事予定'),
            onTap: () {
             launch('https://www.ous.ac.jp/common/files//285/20220311164731084854.pdf');
            },
          ),
          ListTile(
            leading: Icon(Icons.public_outlined),
            title: Text('マイログ'),
            onTap: () {
              launchUrl(Uri.https('mylog.pub.ous.ac.jp', '/uprx/up/pk/pky501/Pky50101.xhtml'),mode:LaunchMode.externalApplication );

            },
          ),
          ListTile(
            leading: Icon(Icons.book_outlined),
            title: Text('学生便覧'),
            onTap: () {
              launch('https://edu.career-tasu.jp/p/digital_pamph/frame.aspx?id=7540000-3-30&FL=0');
            },
          ),
          Divider(),

          ListTile(
            leading: Icon(Icons.link_outlined),
            title: Text('各種リンク集'),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => Link()),
              );
            },
          ),
          ListTile(
            leading: Icon(Icons.call_outlined),
            title: Text('各種連絡先'),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => Call()),
              );
            },
          ),

          Divider(),
          ListTile(
            leading: Icon(Icons.settings_outlined),
            title: Text('設定/その他'),
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => Setting()),
              );
            },
          ),


        ],
      ),
    );
  }
}

Code to retrieve account information from Firestore (I want to use this to retrieve information)

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user != null) {
      print(user.uid);
    }
  });

CodePudding user response:

To get access to user data in firebase you can use the:

FirebaseAuth.instance.currentUser;

this will return a User object and inside it, you can get name, email, uid ..etc

Eg: FirebaseAuth.instance.currentUser.name;

CodePudding user response:

You need to change your NavBar widget to a Stateful widget as you are using a Stream to listen to changes in the AuthState. You can put your StreamListener in the initState method of your Stateful widget

  • Related