我正在努力从Firestore字符串字段(textBlock)填充TextFormField,然后将编辑后的字符串写回到另一个字段(newTextBlock)。
我认为我在控制器上走的路正确。我只需要弄清楚如何在其中获取原始文本,但是我不确定要写入Firestore(即_updateFirestore())。
任何帮助将不胜感激。
class _TextEditState extends State<TextEdit> {
final myController = TextEditingController(
text: 'need the string from the TextBlock field here'
);
@override
void dispose() {
myController.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
myController.addListener(_updateFirestore);
}
_updateFirestore() {
String item;
Firestore.instance
.runTransaction((transaction) async {
DocumentSnapshot snapshot = await transaction
.get(Firestore.instance
.collection('texts')
.document(widget.docID));
await transaction.update(snapshot.reference, {'newTextBlock': item});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Retrieve Text Input'),
),
body:
Container(
padding: EdgeInsets.all(30.0),
child:
StreamBuilder(
stream: Firestore.instance
.collection('texts')
.document(widget.docID)
.snapshots(),
builder: (context, snapshot) {
if(!snapshot.hasData) {
return const Text('Loading ...');
} else {
return TextFormField(
style: Styles.textDefault,
decoration: InputDecoration(
border: InputBorder.none,
),
maxLines: null,
controller: myController,
);
}
},
)
)
);
}
}