Flutter запись текста в FirebaseFirestore и отображение новой записи при смене состояния

Что не так с кодом? данные записываются в Firebase, но не отображается новая запись после добавления, приходится возвращаться на предыдущее окно и запускать View заново, после этого новая запись отображается.

Функция добавления записи firebase_cloud_storage.dart

class FirebaseCloudStorage {
  final travel = FirebaseFirestore.instance.collection('travel');
  
    Future<void> addNewTravelday({
    required String travelId,
    required String textDay,
  }) async {
    return travel.doc(travelId as String).update({traveldayFieldName: FieldValue.arrayUnion([textDay])});
  }
}

Файл travel_page.dart в котором отображается ListView.builder и находится TextField с кнопкой добавления

class TravelPageView extends StatefulWidget {
  TravelPageView(
      {Key? key,
      required this.travelByIdView,
      required this.stringTravelByIdModel})
      : super(key: key);
  final CloudTravel travelByIdView;
  final String stringTravelByIdModel;
  final firebaseCloudStorage = FirebaseCloudStorage();

  @override
  State<TravelPageView> createState() => _TravelPageViewState();
}

class _TravelPageViewState extends State<TravelPageView> {

  var newDayText;

  @override
  void initState() {
    super.initState();
    newDayText;
    widget.travelByIdView.travelday; // List<dynamic>
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AppBar'),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            Container(
              height: 500,
              child: ListView.builder(
                padding: EdgeInsets.symmetric(vertical: 10),
                physics: NeverScrollableScrollPhysics(),
                shrinkWrap: true,
                itemCount: widget.travelByIdView.travelday.length,
                itemBuilder: (BuildContext context, int index) {
                  return Container(
                    child: Text(
                        "${widget.travelByIdView.travelday.elementAt(index)}")
                  );
                },
              ),
            ),
            Column(
              children: [
                TextField(
                  onChanged: (String value) {
                    newDayText = value;
                  },
                ),
                SizedBox(
                  width: double.infinity,
                  child: ElevatedButton(
                      onPressed: () {
                        setState(() {
                          widget.firebaseCloudStorage.addNewTravelday(
                              travelId: widget.stringTravelByIdModel,
                              textDay: newDayText);
                        });
                      },
                      child: Text('Добавить запись'),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

Всё более менее работает но при нажатии на ElevatedButton, вызывается setState, в котором отрабатывает функция записи текста в базу, сам стейт не обновляется, новая запись не отображается в ListView.


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