Сообщение об ошибке
W / NetworkRequest (5093): нет авторизационного токена для запроса
W / StorageUtil (5093): нет авторизационного токена для запроса
W / NetworkRequest (5093): нет авторизационного токена для запроса
E / flutter (5093): [ОШИБКА: flutter / lib / ui / ui_dart_state. cc (157)] Необработанное исключение: ошибочное утверждение: логическое выражение не должно быть нулевым
Вот мой код обновления
Future<bool> updateProduct(String title, String description, File image,
double price, LocationData locData) async {
_isLoading = true;
notifyListeners();
String imgUrl;
print("section one");
final StorageReference storage = FirebaseStorage.instance.ref();
//final FirebaseReference reference=FirebaseRe
final String picture1 = "1${DateTime.now().millisecondsSinceEpoch.toString()}.jpg";
StorageUploadTask task1 = storage.child(picture1).putFile(image);
StorageTaskSnapshot snapshot1 =
await task1.onComplete.then((snapshot) => snapshot);
print("section tow");
task1.onComplete.then((snapshot) async {
imgUrl = await snapshot.ref.getDownloadURL();
print("URL printed");
print(imgUrl);
final Map<String, dynamic> updateData = {
'title': title,
'description': description,
'image': imgUrl,
'price': price,
'loc_lat': locData.latitude,
'loc_lng': locData.longitude,
'loc_address': locData.address,
'userEmail': selectedProduct.userEmail,
'userId': selectedProduct.userId
};
try {
final res= await http.put(
'https://statemarket-337e3.firebaseio.com/products/${selectedProduct.id}.json?auth=${_authenticatedUser.token}',
body: json.encode(updateData));
if(res.statusCode==200){
Fluttertoast.showToast(msg: "updated");
}else{
Fluttertoast.showToast(msg: "Error Found"+res.statusCode.toString());
}
_isLoading = false;
final Product updatedProduct = Product(
id: selectedProduct.id,
title: title,
description: description,
image: imgUrl,
price: price,
location: locData,
userEmail: selectedProduct.userEmail,
userId: selectedProduct.userId);
_products[selectedProductIndex] = updatedProduct;
notifyListeners();
return true;
} catch (error) {
_isLoading = false;
notifyListeners();
return false;
}
});
}
Вот мой код продукта, где я вызываю свою функцию
void _submitForm(
Function addProduct, Function updateProduct, Function setSelectedProduct,
[int selectedProductIndex]) {
if (!_formKey.currentState.validate() || (_formData['image'] == null && selectedProductIndex == -1)) {
return;
}
_formKey.currentState.save();
if (selectedProductIndex == -1) {
addProduct(
_titleTextController.text,
_descriptionTextController.text,
_formData['image'],
_formData['price'],
_formData['location']).then((bool success) {
if (success) {
Navigator
.pushReplacementNamed(context, '/products')
.then((_) => setSelectedProduct(null));
} else {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Something went wrong'),
content: Text('Please try again!'),
actions: <Widget>[
FlatButton(
onPressed: () => Navigator.of(context).pop(),
child: Text('Okay'),
)
],
);
});
}
});
} else {
updateProduct(
_titleTextController.text,
_descriptionTextController.text,
_formData['image'],
_formData['price'],
_formData['location'],
).then((_) => Navigator
.pushReplacementNamed(context, '/products')
.then((_) => setSelectedProduct(null)));
}
}
Любое решение для решения этой проблемы?