Как создать всплывающее сообщение об ошибке с сервера API на flutter?

#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) он создает длинный код, если вы добавляете больше кода ошибки @robert

4. можете ли вы дать мне ссылку на этот метод, сэр? я хочу это изучить … спасибо

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:

Спасибо за вашу помощь, Ян, мне удалось заставить ответ появиться на панели закусок