Заполните TextFormField из документа Firestore и запишите редактирование обратно в документ - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь заполнить TextFormField из поля Firestore String (textBlock) и затем записать отредактированную строку обратно в другое поле (newTextBlock).

Я думаю, что на правильном пути с контроллером.Мне просто нужно выяснить, как получить оригинальный текст, но я совершенно не уверен в том, что нужно писать в Firestore (ie_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,
                  );
              }
          },
          )
        )
    );
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...