Flutter 如何从Firestore初始化值
我正在尝试使用Firestore中的值初始化TextEditingController,并希望了解如何在initState函数中执行此操作。在initState上,我想调用文档并将TextEditingController设置为名为“author”的文档字段的值。下面是我正在尝试做的一个例子:Flutter 如何从Firestore初始化值,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我正在尝试使用Firestore中的值初始化TextEditingController,并希望了解如何在initState函数中执行此操作。在initState上,我想调用文档并将TextEditingController设置为名为“author”的文档字段的值。下面是我正在尝试做的一个例子: @override void initState() { super.initState(); var document = Firestore.instance.collection
@override
void initState() {
super.initState();
var document = Firestore.instance.collection('books').document('Harry Potter').get();
_authorController = new TextEditingController(text: document['author']);
}
如何构造此调用?创建一个新的异步方法,然后在
initState()中调用它。
我建议将
文档['author']
作为参数从父小部件发送到此小部件,而不是在此处调用它 创建一个新的异步方法,然后在initState()中调用它
我建议将文档['author']
作为参数从父小部件发送到此小部件,而不是在此处调用它 为了能够从firebase查询信息,您需要进行异步调用,已经使用关键字async
或then
async
示例:
class SomePage extends StatefulWidget {
@override
_SomePageState createState() => _SomePageState();
}
class _SomePageState extends State<SomePage> {
final _authorController = new TextEditingController();
final _firestore = Firestore.instance;
// Async Method
void initAuthor() async {
// we use the try catch to get an error in case an error happens with firestore
try {
final documentSnapshot = await _firestore.collection('books').document('Harry Potter').get();
_authorController.text = documentSnapshot.data['author'];
}catch(e){
print(e);
}
}
@override
void initState() {
super.initState();
initAuthor();
}
}
为了能够从firebase查询信息,您需要进行异步调用,已经使用关键字async
或then
async
示例:
class SomePage extends StatefulWidget {
@override
_SomePageState createState() => _SomePageState();
}
class _SomePageState extends State<SomePage> {
final _authorController = new TextEditingController();
final _firestore = Firestore.instance;
// Async Method
void initAuthor() async {
// we use the try catch to get an error in case an error happens with firestore
try {
final documentSnapshot = await _firestore.collection('books').document('Harry Potter').get();
_authorController.text = documentSnapshot.data['author'];
}catch(e){
print(e);
}
}
@override
void initState() {
super.initState();
initAuthor();
}
}
class SomePage extends StatefulWidget {
@override
_SomePageState createState() => _SomePageState();
}
class _SomePageState extends State<SomePage> {
final _authorController = new TextEditingController();
final _firestore = Firestore.instance;
void initAuthor() {
final documentSnapshot = _firestore.collection('books')
.document('Harry Potter')
.get()
.then((documentSnapshot) {
_authorController.text = documentSnapshot.data['author'];
}).catchError((error){
print(error);
});
}
@override
void initState() {
super.initState();
initAuthor();
}
}