Flatter firebase Передача метода в другой файл дротика - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в изучении флаттера и пожарной базы

Я пробовал и искал некоторые решения, но ничего не получилось.

Здесь у меня есть файл 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();
                    },
                  ),
                ],
              ),
        );
  }
}

Но проблема в том,всякий раз, когда я щелкаю по дому, затем выхожу из него, он не выходит из системы, а затем, когда я щелкаю по ящику, затем выходит из системы, он выходит из системы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...