Как решить, 'getID' documentID 'был вызван в null. ~? - PullRequest
0 голосов
/ 08 января 2020

У меня есть эта функция для модели с областью действия, в которой я хочу, чтобы при нажатии кнопки был увеличен базовый уровень для моментального снимка, но он возвращает ˜The getID 'documentID' был вызван для null. ˜, он изменяет состояние моего значка но число не увеличивается. Если я даю название документа, он работает нормально, но я не хочу его указывать. Есть мысли о том, что может быть решением?

void main() {
runApp(EaiCasimiro());
}



class EaiCasimiro extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ScopedModel<LikesModel>(
    model: LikesModel(),
    child: MaterialApp(
      title: "E aí,  Casimiro?",
      home: HomeScreen(),
      debugShowCheckedModeBanner: false,
      )
    );
   }
}


class LikesModel extends Model {

DocumentSnapshot snapshot;




bool _liked = true;

static LikesModel of(BuildContext context) =>
  ScopedModel.of<LikesModel>(context, rebuildOnChange: true);


bool isLiked() => _liked;




void pressed(){
_liked = !_liked;
notifyListeners();
 }

void changeLikes() {
Firestore.instance
    .collection("lanchonetes")
    .document(snapshot.documentID)
    .updateData({'likes': FieldValue.increment(_liked ? -1 : 1)});


    }

}

1 Ответ

3 голосов
/ 08 января 2020

Поскольку у вас много кода здесь, но вы не указали конкретную c строку, где происходит ошибка, я думаю, что это происходит здесь:

Firestore.instance
    .collection("lanchonetes")
    .document(snapshot.documentID)
    .updateData({'likes': FieldValue.increment(_liked ? -1 : 1)});

Мне потребовалось некоторое время чтобы найти, где вы определили snapshot, но я нашел его здесь:

DocumentSnapshot snapshot;

Поскольку вы не присваивали значение, когда вы его объявили, оно будет иметь начальное значение null. Поэтому, когда вы используете его в запросе, подобном следующему: snapshot.documentID, вы получаете эту ошибку.

Убедитесь, что snapshot определен перед использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...