Разрушаемый виджет не увольняется, а UniqueKey работает неоптимально - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь использовать запрещенный виджет как часть моего кода Flutter. Это прекрасно работает, за исключением случаев, когда я проведу до первого документа или после последнего документа. Код работает нормально, пока я не достигну конца списка документов. Я получил следующее сообщение об ошибке:

The following assertion was thrown building Dismissible-[<'0'>](dirty, state: _DismissibleState#6b64c(tickers: tracking 2 tickers)):
A dismissed Dismissible widget is still part of the tree.


Make sure to implement the onDismissed handler and to immediately remove the Dismissible widget from the application once that handler has fired.

После проверки решений этой проблемы я решил переключиться с ключа, зависящего от индекса, на UniqueKey. Но теперь он вообще не перемещается по списку - страница остается в самом первом документе. Пожалуйста, сообщите.

Ниже приведена соответствующая часть кода, который я использовал:

StreamBuilder <QuerySnapshot>(
          stream: _firestore.collection('articles').snapshots(),
          builder: (BuildContext context, snapshot) {
            if (snapshot.hasError) {
              return Center(child: Text("Error fetching posts ${snapshot.error}"),);
            }
            if (snapshot.hasData) {
              List<DocumentSnapshot> documents = snapshot.data.documents;
              return GestureDetector(
                onHorizontalDragUpdate: (dragUpdateDetails) {
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => WebViewContainer(documents[index].data['url'])));              },
                child: Dismissible(
                  key: Key(index.toString()),
                  direction: DismissDirection.vertical,
                  onDismissed: (direction) {
                    setState(() {
                      documents.removeAt(index);
                      index = (index==documents.length -1) ? index = 0 : index++;
                    });
                  },

Приветствия

...