【发布时间】:2020-05-09 10:32:19
【问题描述】:
我正在尝试在 showDialog 中处理来自 http 请求的错误,然后抛出一个错误,但我正面临这个错误
错误
E/flutter (18769): #13 TextInput._handleTextInputInvocation 包:flutter/.../services/text_input.dart:968 E/flutter (18769): #14 MethodChannel._handleAsMethodCall 包:flutter/…/services/platform_channel.dart:402 E/flutter (18769):#15 MethodChannel.setMethodCallHandler。包:flutter/…/services/platform_channel.dart:370 E/颤振 (18769):#16
_DefaultBinaryMessenger.handlePlatformMessage 包:flutter/…/services/binding.dart:200 E/flutter (18769): #17
_调用3。 (dart:ui/hooks.dart:303:15) E/flutter (18769): #18 _rootRun (dart:async/zone.dart:1126:13) E/flutter (18769): #19 _CustomZone.run (dart:async/zone.dart:1023:19) E/颤振(18769):#20 _CustomZone.runGuarded (dart:async/zone.dart:925:7) E/flutter (18769): #21 _invoke3 (dart:ui/hooks.dart:302:10) E/flutter (18769): #22
_dispatchPlatformMessage (dart:ui/hooks.dart:162:5)
Future<void> addProduct(Product product) {
const url = 'https://flutter-shop-768a7.firebaseio.com/products.jon';
return http
.post(url,
body: json.encode({
'title': product.title,
'description': product.description,
'imageUrl': product.imageUrl,
'price': product.price,
'isFavorite': product.isFavorite
}))
.then((response) {
final newProduct = Product(
title: product.title,
description: product.description,
imageUrl: product.imageUrl,
price: product.price,
id: json.decode(response.body)['name']);
// _items.insert(index, element)
_items.add(newProduct);
notifyListeners();
}).catchError((error) {
throw error;
});
}
Provider.of<Products>(context, listen: false)
.addProduct(_edditedProduct)
.catchError((error) {
return showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('An Error occurred!'),
content: Text('Someghing went wrong'),
actions: <Widget>[
FlatButton(
child: Text('ok'),
onPressed: () async => Navigator.of(context).pop())
],
),
);
}).then((_) {
print('this is then function');
setState(() {
_isLoading = false;
});
Navigator.pop(context);
});
【问题讨论】: