Я хотел бы добавить значение bool, которое я ввожу в текстовое поле, к существующей сумме в поле, например, если bagWeight = 1, и я ввожу 5, bagWeight должен обновиться до 6.
При условии, что sharkSpecies одинаковы, SharkSpecies и bagWeight являются двумя полями
Я попытался использовать обновление, но при этом создается новый идентификатор документа, который мне не нужен, или новый экземпляр
CRUD.DART
import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
class crudMedthods {
bool isLoggedIn() {
if (FirebaseAuth.instance.currentUser() != null) {
return true;
} else {
return false;
}
}
Future<void> addData(Data) async {
if (isLoggedIn()) {
//carData is
Firestore.instance.collection('testcrud').document('Kd7RLkMVtu06BDDrxw2j').updateData(Data).catchError((e) {
print(e);
});
} else {
print('You need to be logged in');
}
}
}'
DASHBOARD.DART
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'services/crud.dart';
class DashboardPage extends StatefulWidget {
@override
_DashboardPageState createState() => _DashboardPageState();
}
class _DashboardPageState extends State<DashboardPage> {
String sharkSpecies;
double bagWeight;
double count =0.0;
crudMedthods crudObj = new crudMedthods();
Future<bool> addDialog(BuildContext context) async {
return showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Add Data', style: TextStyle(fontSize: 15.0)),
content: Column(
children: <Widget>[
TextField(
decoration: InputDecoration(hintText: 'Enter the shark species'),
onChanged: (value) {
this.sharkSpecies = value;
},
),
SizedBox(height: 5.0),
TextField(
decoration: InputDecoration(hintText: 'Enter the bags weight'),
onChanged: (value) {
this.bagWeight= double.parse(value);
},
keyboardType: TextInputType.number,
),
],
),
actions: <Widget>[
FlatButton(
child: Text('Add'),
textColor: Colors.blue,
onPressed: () {
Navigator.of(context).pop();
crudObj.addData({
'sharkSpecies': this.sharkSpecies,
'bagWeight': this.bagWeight
}).then((result) {
dialogTrigger(context);
}).catchError((e) {
print(e);
});
},
)
],
);
});
}
Future<bool> dialogTrigger(BuildContext context) async {
return showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Job Done', style: TextStyle(fontSize: 15.0)),
content: Text('Added'),
actions: <Widget>[
FlatButton(
child: Text('Alright'),
textColor: Colors.blue,
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('Dashboard'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.add),
onPressed: () {
addDialog(context);
},
)
],
),
body: Center());
}
}
Я хотел бы обновить поле до значения, которое включает в себя первоначальную сумму плюс новую сумму, как описано в сводке:)