Как решить ˜Геттер 'documentID' был вызван с нулевым значением.˜?

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

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)});


    }

}

person Ricardo Oscar Kanitz    schedule 08.01.2020    source источник
comment
Пожалуйста, позаботьтесь о правильном форматировании кода в своем вопросе, чтобы его было легче читать. Кажется, вы потеряли много отступов, и это усложняет задачу. Вы можете пометить целые блоки текста как код, просто начав и завершив весь блок тремя обратными кавычками: ```   -  person Doug Stevenson    schedule 08.01.2020
comment
Спасибо за ваш совет, Даг, я постараюсь сделать его лучше в следующий раз, когда опубликую код.   -  person Ricardo Oscar Kanitz    schedule 08.01.2020
comment
Вы всегда можете вернуться и отредактировать код прямо сейчас, щелкнув ссылку редактирования внизу вопроса и внеся изменения в редакторе.   -  person Doug Stevenson    schedule 08.01.2020


Ответы (1)


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

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

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

DocumentSnapshot snapshot;

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

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

person Doug Stevenson    schedule 08.01.2020
comment
Знаете, как я могу это определить? Я пробовал разные способы, много искал, но самое близкое, что я нашел, было с .forEach, но это увеличило все мои документы. - person Ricardo Oscar Kanitz; 09.01.2020