我想问一下我的代码是怎么回事。
在这种情况下,假设“ Counter”(计数器)字段为179,如何在打印之前更新外部myData?
class Test {
Firestore _firestore = Firestore.instance;
var myData;
void getData() async {
DocumentSnapshot snapshot =
await _firestore.collection('Counter').document('Counter').get();
myData = await snapshot.data['Counter'];
print('inside $myData');
}
void checkMyData() {
myData = 5;
getData();
print('outside $myData');
}
}
控制台:
颤抖:5点以外
颤动:在179内
答案 0 :(得分:0)
您必须像这样使getData()
返回Future
:
Future getData() async {
因此您可以这样做:
getData().then((value) {
print('value: $value');
}).catchError((error) {
print('error: $error');
});
但是您可能想使用FutureBuilder
在到达时显示信息,例如:
FutureBuilder(
future: getData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text('value: ${snapshot.data}');
} else if (snapshot.hasError){
return Text('error: ${snapshot.error}');
}
return Text('loading...');
},
)