You can simplify the code:
Future _fetchUserInfo(String id) async {
User fetchedUser;
var snapshot = await Firestore.instance
.collection('user')
.document(id)
.get();
return User(snapshot);
}
you also need async/await to get the value
void foo() async {
final user = await _fetchUserInfo(id);
}