Reputation: 83
I'm using firestore database, this is my variables
final firebase = FirebaseFirestore.instance;
int lessonpoint1 = 0;
int lessonpoint2 = 0;
I've created a metod to create these variables on startup
create() async {
try {
await firebase.collection("Accounts").doc(_user.uid).set({
"Adı Soyadı": _user.displayName,
"Mail Adresi": _user.email,
"lessonpoint1": lessonpoint1,
"lessonpoint2": lessonpoint2,
});
} catch (e) {
print(e);
}
}
after I create it, I don't want the variables here to have a value of 0 here. I want to pull these values from firestore. How can I do that? I give the value 10 to the variable with Update, but when I want to access the variable, the value 0 at the global level comes.
Thank you, have a good day.
Upvotes: 0
Views: 105
Reputation: 7398
Instead of directly setting the value from the client you could either use a Transaction
or FieldValue.increment()
.
With a Transaction
you would ensure that you always get the latest value from the database and update it on it.
With FieldValue.increment()
it's very similar but much less syntax and you can work inly with simple increments.
If you for example want to increase the points on each visit by 10
you could write your code like this:
create() async {
try {
await firebase.collection("Accounts").doc(_user.uid).set({
"Adı Soyadı": _user.displayName,
"Mail Adresi": _user.email,
"lessonpoint1": FieldValue.increment(10),
"lessonpoint2": FieldValue.increment(10),
});
} catch (e) {
print(e);
}
}
If you are only interested how to get the data itself from firestore I would recommend to check out first the docu here.
You can read more about both the methods them here.
Upvotes: 2