Я новичок в изучении флаттера и пожарной базы
Я пробовал и искал некоторые решения, но ничего не получилось.
Здесь у меня есть файл dart для homepart, содержащий аутентификацию firebase и функцию _signOut
class HomePage extends StatefulWidget {
HomePage({Key key, this.auth, this.userId, this.onSignedOut})
: super(key: key);
final BaseAuth auth;
final VoidCallback onSignedOut;
final String userId;
@override
State<StatefulWidget> createState() => new _HomePageState();
}
class_HomePageState extends State<HomePage>{
_signOut() async {
try {
await widget.auth.signOut();
widget.onSignedOut();
} catch (e) {
print(e);
}
}
@override
Widget build(BuildContext context) {
return new Scaffold(
drawer: DrawerMenu(auth: widget.auth,userId: widget.userId,onSignedOut: this.widget.onSignedOut),
appBar: new AppBar(
title: new Text('App'),
),
);
}
}
У меня также есть файл дротика ящика
Я не знаю, является ли это лучшим способом или мусором, но это работает
class DrawerMenu extends StatefulWidget {
DrawerMenu({ this.auth, this.userId,this.onSignedOut});
final BaseAuth auth;
final VoidCallback onSignedOut;
final String userId;
@override
State<StatefulWidget> createState() => new _DrawerMenu();
}
class _DrawerMenu extends State<DrawerMenu>{
FirebaseUser currentUser;
@override
void initState(){
super.initState();
_loadCurrentUser();
}
void _loadCurrentUser() {
FirebaseAuth.instance.currentUser().then((FirebaseUser user){
setState(() {
this.currentUser = user;
});
});
}
String _email()
{
if(currentUser!=null)
return currentUser.email;
else
return "no current user";
}
@override
Widget build(BuildContext context) {
return new Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
UserAccountsDrawerHeader(
accountName: Text("Name", style: TextStyle(fontWeight: FontWeight.bold)),
accountEmail: Text(_email()),
currentAccountPicture:
ListView(
children: [
const SizedBox(height: 0.0),
CircleAvatar(
radius: 36.0,
backgroundImage: NetworkImage('https://articles-images.sftcdn.net/wp-content/uploads/sites/3/2016/01/wallpaper-for-facebook-profile-photo.jpg'),
),
],),
decoration: BoxDecoration(color: Colors.blue),
),
ListTile(
title: Text('Home'),
onTap: () {
Navigator.pop(context);
Navigator.push(context,
MaterialPageRoute(builder: (context) => HomePage(auth: widget.auth,userId: widget.userId,onSignedOut: this.widget.onSignedOut ,)));
},
),
ListTile(
title: Text('Log Out'),
onTap: () {
this.widget.onSignedOut();
},
),
],
),
);
}
}
Но проблема в том,всякий раз, когда я щелкаю по дому, затем выхожу из него, он не выходит из системы, а затем, когда я щелкаю по ящику, затем выходит из системы, он выходит из системы