0

我有这个功能范围模型,我希望在按下按钮时有一个firebase增量来快照,但它返回〜在null上调用了getter'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)});


    }

}
4

1 回答 1

3

由于您在这里有很多代码,但没有注意到发生错误的特定行,我猜它发生在这里:

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

我花了一段时间才找到你定义的地方snapshot,但我在这里找到了它:

DocumentSnapshot snapshot;

由于您在声明它时没有分配值,因此它的初始值将为 null。因此,当您在这样的查询中使用它时:snapshot.documentID,您会收到该错误。

确保snapshot在使用前已定义。

于 2020-01-08T00:21:29.870 回答