Ошибка в пакете Http и JsonPlaceholder во время работы - PullRequest
1 голос
/ 07 августа 2020

Я получаю эту ошибку много раз в Flutter , когда я хочу использовать JsonPlaceholder API, и я загрузил пакет с именем HTTP package в pub.dev/flutter, используемый в pubspe c .yaml, но я не могу получить данные, которые выдают ту же ошибку каждый раз, когда я запускаю приложение,

 ([ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: SocketException: Failed host lookup: 'jsonplaceholder.typicode.com' (OS Error: No address associated with hostname, errno = 7)) , 

Вот код, который я использовал в своем классе виджетов с отслеживанием состояния

import 'package:flutter/material.dart';
import 'package:http/http.dart';
class Loading extends StatefulWidget {
  @override
  _LoadingState createState() => _LoadingState();
}
class _LoadingState extends State<Loading> {
  void getData() async{
  Response response =  await get('https://jsonplaceholder.typicode.com/todos/1');
  print(response.body);
  }
  @override
  initState()  {
    super.initState();
    getData();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('Loading Screen'),
           ),
    );
  }
}

1 Ответ

0 голосов
/ 07 августа 2020

Проблема находится на разных этапах.

  • Не удалось импортировать пакет справа
  • Не выполнить операцию прямо в методе

Мы будем разбираться с этим по очереди. Обратитесь к документации http , выбрав ссылку дать. Теперь перейдем к коду

1. Импорт пакета справа

// refer documentation as well
import 'package:http/http.dart' as http;

2. Правильное использование метода

  void getData() async{
    // see the difference, it is http.get()
    Response response =  await http.get('https://jsonplaceholder.typicode.com/todos/1');
    print('Response body: ${response.body}');
  }

Теперь, когда вы вызываете свой метод в initState(), вы получите данные в консоли.

Кроме того, это хорошая практика чтобы взглянуть на response code, если это 200, это OK, иначе верните сообщение об ошибке.

  void getData() async{
    // see the difference, it is http.get()
    Response response =  await http.get('https://jsonplaceholder.typicode.com/todos/1');
    
    if(response.statusCode == 200) print('Response body: ${response.body}');
    else print('Some error happened, here is the status code: ${response.statusCode}')
  }
...