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;
}


Ответы (0 шт):