这是我的代码,我想在其中显示未来的电子邮件,但我将从Firestore中获取它。但是,我不确定我将如何需要使用FutureBuilder检索我的值,而我希望将其用作字符串。
这是我获取电子邮件的方法:
Future<String> getEmail() async {
String _email = (await FirebaseAuth.instance.currentUser()).email;
DocumentSnapshot snapshot = await _firestore.collection('users')
.document(_email)
.collection('met_with')
.document('email')
.get();
// print("data: ${snapshot.data}"); // might be useful to check
return snapshot.data['email']; // or another key, depending on how it's saved
}
这是我的小部件树,在这里我尝试将电子邮件提取为字符串:
@override
Widget build(BuildContext context) {
return Card(
elevation: 3.0,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
child: ListTile(
leading: CircleAvatar(
backgroundImage: AssetImage(imagePath),
),
trailing: Icon(Icons.more_horiz),
title: Text(
email,
style: TextStyle(
color: Colors.deepPurple[700],
fontWeight: FontWeight.bold,
),
),
subtitle: Text(infection),
onTap: () => showModalBottomSheet(
context: context,
builder: (builder) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 50.0, horizontal: 10.0),
child: Column(
children: <Widget>[
BottomSheetText(
question: 'Email', result: getEmail()),
SizedBox(height: 5.0),
BottomSheetText(
question: 'Contact Time',result:"12:00 PM"),// getTimeStamp().toString()),
SizedBox(height: 5.0),
BottomSheetText(
question: 'Contact Location',
result: 'Silpukhuri, Guwahati'),
SizedBox(height: 5.0),
BottomSheetText(question: 'Times Contacted', result: '3'),
],
),
);
}),
),
);
}
}
您需要使用FutureBuilder
: