Flutter. Получение значения из Future
Всем привет, у меня есть текстовый виджет,текст которого должен браться из метода.
Text('\n'+readData(snapshot.data.documents[i]['user']),style: TextStyle(color: Colors.grey),)
Сам метод:
Future<String> readData(String id) async {
DocumentSnapshot snapshot = await Firestore.instance.collection('users').document(id).get() ;
final String first_name = snapshot.data['Firstname'];
return first_name;
}
Но данные соответственно получить не могу, потому что возвращаемое значение Future, а текстовый виджет принимает только String.
К можно вытащить то самое заветное значение?
Пробовал писать методы, что-то вроде этого, а также различные обёртки - результат нулевой. Помогите, пожалуйста.
String readData(String id){
String k;
Firestore.instance.collection('users').document(id).get().then((test){
return k=test.data['Firstname'].toString();
});
return k;
}
Весь код, решаемой задачи:
class BodyPhoto extends State<PhotoScreenBody>{
@override
Widget build(BuildContext context) {
return
StreamBuilder(stream:Firestore.instance.collection('Photo').snapshots(),builder: (context,snapshot){
return ListView(children:<Widget>[
for (int i=0;i<snapshot.data.documents.length;i++)
Card(child: ListTile(
title: Column(crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
Image(image: Image.network(snapshot.data.documents[i]['photo_url']).image,),
Text('\n'+snapshot.data.documents[i]['signature']),
//Text('\n'+readData(snapshot.data.documents[i]['user']).then((String value) => print(value)),style: TextStyle(color: Colors.grey),),
Text('\n'+snapshot.data.documents[i]['user'],style: TextStyle(color: Colors.grey),),
Text(snapshot.data.documents[i]['date'],style: TextStyle(color: Colors.grey),)
],),
),)
]);
});
}
}
Future<String> readData(String id) async {
DocumentSnapshot snapshot = await Firestore.instance.collection('users').document(id).get() ;
final String first_name = snapshot.data['Firstname'];
return first_name;
}