база данных flutter firebase получает userID, а затем получает другие данные - PullRequest
0 голосов
/ 08 сентября 2018

я использую userID для создания базы данных, как показано ниже

enter image description here

Я могу получить идентификатор пользователя, когда пользователь вошел в систему, но если я использую идентификатор пользователя для получения данных из базы данных Firebase, он всегда получит следующую ошибку.

Пожалуйста, помогите решить эту проблему.

> NoSuchMethodError: The method '[]' was called on null. Receiver: null
> Tried calling: []("Email")

Вот с моим кодом:

      @override
      void initState() {
        super.initState();
        _loadCurrentUser();
        shop = Shop();
        databaseReference = database.reference().child("香港");
      }
      void _loadCurrentUser() {
        FirebaseAuth.instance.currentUser().then((FirebaseUser user) {
          setState(() {
            // call setState to rebuild the view
            this.currentUser = user;
          });
        });
      }
      String _email() {
        if (currentUser != null) {
          return currentUser.email;
        } else {
          return "no current user";
        }
      }
      String _userID() {
        if (currentUser != null) {
          debugPrint(currentUser.uid);
          databaseReference.child(currentUser.uid).once().then(_updateToDo);
          return currentUser.uid;
        } else {
          return "no current user";
        }
      }

      @override
      Widget build(BuildContext context) {
        void _signOut() async {
          try {
            await widget.auth.signOut();
            widget.onSignOut();
          } catch (e) {
            print(e);
          }
        }
        return new Scaffold(
          backgroundColor: Colors.blueGrey,
          appBar: new AppBar(
            backgroundColor: Colors.black,
            title: Text(_email()),

          ),
          body:
            createFireList(),
        );
      }

      Widget createFireList() {
        return Column(
          children: <Widget>[
            Text(_userID()),
            Text(test)

          ],
        );
      }

      _updateToDo(DataSnapshot map) {
        if (map.value != null) {
          var x = map.value["Email"];
          setState(() {
            test = x;
          });
        }
        else {
          debugPrint("Error");
        }
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...