Я читаю данные из 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();
}
)
],
),
),