#flutter #dart
#flutter #dart
Вопрос:
Извините за мой плохой английский, я только что изучил программирование flutter dart, я хочу отображать всплывающее окно при появлении сообщения об ошибке с сервера API, вышел ответ о состоянии отладки, но я все еще не понимаю, как отобразить всплывающее окно с ошибкой в моем коде.
это мой код:
Future<QueueModel> getQueue(
String norm, String dateBirth, String name, String examDate) async {final String apiUrl = "http://192.168.137.99:81/server_api/api/queueme"; final response = await http.post(apiUrl,
body: {"norm": norm, "dateBirth": dateBirth, "name": name, "examDate": examDate}); if (response.statusCode == 200) {
final String responseString = response.body;
return queueModelFromJson(responseString); } else{
print(response.body); } }
Комментарии:
1. как выглядит ваш ответ при сохранении данных или если не удается сохранить данные @robert
2. когда «print (response.body);» Я изменил его на «return null:» он показывает ошибку «ничего не происходит»
3. Попробуйте обработать обычный код ошибки и код успеха, например 404,200, и передать объект сообщения, подобный example
{"status":200,"message":"Data Saved Successfully"}
, чтобы вы могли использовать полеmessage
оповещения или проверить код ошибки в flutter, как будтоif (response.statusCode == 200)
он создает длинный код, если вы добавляете больше кода ошибки @robert4. можете ли вы дать мне ссылку на этот метод, сэр? я хочу это изучить … спасибо
5. Попробуйте обработать с помощью flutter resocoder.com/2019/12/11 /… , попробуйте также прочитать это dev.to/ashishrawat2911 / … , и если вы ищете api, просто выполните поиск на основе языка, который вы использовали для создания API, который вы можете легко использовать @robert
Ответ №1:
Если я правильно понимаю, вы хотите отобразить его в приложении, а не просто выводить как отладочный.
Для отображения типа snackbar:
void showSnackBar(BuildContext context, String text)
{
final snackBar = SnackBar(
content: Text(text),
duration: Duration(seconds: 1),//default is 4s
);
// Find the Scaffold in the widget tree and use it to show a SnackBar.
Scaffold.of(context).showSnackBar(snackBar);
}
Для традиционных всплывающих окон:
void showPurchaseDialog(BuildContext context) {
showDialog(
context: context,
barrierDismissible: false, // disables popup to close if tapped outside popup (need a button to close)
builder: (BuildContext context) {
return AlertDialog(
title: Text("title",),
content: Text("your text here"),
//buttons?
actions: <Widget>[
FlatButton(
child: Text("Close"),
onPressed: () { Navigator.of(context).pop(); }, //closes popup
),
],
);
}
);
}
Комментарии:
1. Если я правильно понимаю, ему нужно, чтобы это всплывающее окно появлялось при сбое API, поэтому @robert вызовите эту функцию showSnackBar в вашей части else.
2. спасибо, сэр, я попробую, да, я хочу, чтобы всплывающее сообщение об ошибке с сервера API при сбое, а не только при отладке.
3. Если этот ответ решил вашу проблему, пожалуйста, отметьте его как правильный для других.
4.
Scaffold.of(context).showSnackBar(snackBar);
теперь устарело. Изменил это дляScaffoldMessenger.of(context).showSnackBar(snackBar);
Ответ №2:
Спасибо за вашу помощь, Ян, мне удалось заставить ответ появиться на панели закусок