Значение NULL в Панели запуска электронной почты - PullRequest
0 голосов
/ 03 ноября 2019

Я читаю данные из firestore и использую их для запуска URL для электронной почты. Но значение, которое я получаю при открытии письма, является NULL. Но это не подскажет никакой ошибки.

Мой код для ввода данных в var приведен в списке.

var userName, userAdd, userAge, userResult, uniEmail;

void emailDetail() async{
  Widget build(BuildContext context) {
      return new StreamBuilder(
          stream: UniQuery().getUserDetail(),
          builder: (BuildContext context, snapshot) {
            if (!snapshot.hasData)
              return new Text('Loading..... Please wait');

            var userDocument = snapshot.data;
             userName = userDocument['name'];
             userAge = userDocument['age'];
             userAdd = userDocument['address'];
             userResult= userDocument['result'];

             return new Text('Success read user data');
          }
      );
  }
}

void emailAddress() async{
  Widget build(BuildContext context) {
      return new StreamBuilder(
          stream: UniQuery().getUniBasedSelectedUni(),
          builder: (BuildContext context, snapshot) {
            if (!snapshot.hasData)
              return new Text('Loading..... Please wait');

            var userDocument = snapshot.data;
            uniEmail = userDocument['email'];

            return new Text('Success read university email');
          }
      );
  }
}

void sendEmail() async {
  emailDetail();
  emailAddress();
  var url = 'mailto:$uniEmail?subject= University Application'
      +'&body= Name: $userName \nAge: $userAge \nAddress: $userAdd'
      +'\nResult: $userResult';
  if (await canLaunch(url)) {
    await launch(url);
  }
  else {
    throw 'Could not launch $url';
  }
} 

Код используется для получения данных из firestore для сведений о пользователе и адреса электронной почты отправителя

   Future<String> getCurrentUser() async{
    final FirebaseUser user = await FirebaseAuth.instance.currentUser();
    final String uID = user.uid.toString();
    return uID;
  }

  setUserDetail() async{
    userID = await getCurrentUser();
  }

  getUserDetail(){
    setUserDetail();
    return dbReference.collection('User')
        .document(userID)
        .snapshots();
  }

  getUniBasedSelectedUni(){
    return dbReference.collection('University')
        .where('name', isEqualTo: selectedUni)
        .snapshots();
  }

и я звонюэто sendEmail здесь

bottomNavigationBar: BottomAppBar(
    color: Colors.blue,
    child: Row(
      mainAxisAlignment: MainAxisAlignment.spaceAround,
      children: <Widget>[

        IconButton(
          icon: Icon(Icons.home),
          onPressed:(){
            Navigator.push(context,MaterialPageRoute(builder: (context)
            => mainmenu()));
          },
        ),

        IconButton(
          icon: Icon(Icons.send),
          onPressed: (){
            sendEmail();
          }
        )
      ],
    ),
  ),

NULL Value

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