тип 'String' не является подтипом типа 'Null' в методе get метода flutter - PullRequest
0 голосов
/ 28 января 2020

Как дела?

Я сталкиваюсь с этой проблемой, и я не знаю, в чем причина этой ошибки

тип 'String' не является подтипом типа 'Null' в методе get flutter

это функция get api, которую я использую

 Future<Stream<ServiceTypes>> getServiceTypesa() async {
 final String url = 'https://test.com';

 final client = new http.Client();
 final streamedRest = await client.send(
   http.Request('get', Uri.parse(url))
 );

 return streamedRest.stream 
     .transform(utf8.decoder)
     .transform(json.decoder)
     .expand((data) => (data as List))
     .map((data) => ServiceTypes.fromJson(data));
}

здесь вы можете увидеть функцию обнаружения данных

data from json

i видел также эту ошибку

StateError (плохое состояние: поток уже прослушан.)

и эта ошибка

error

это моя функция прослушивания

  @override
  void initState() {
    _serviceTypes = new List<ServiceTypes>();
    listenForServiceTypes();
    super.initState();
  }

  void listenForServiceTypes() async {
    setState(() {
      this._show_serviceTypesProgress = true;
    });
    final Stream<ServiceTypes> stream = await getServiceTypesa();

    stream.listen((ServiceTypes serviceTypes) =>
        setState(() => _serviceTypes.add(serviceTypes)));

    setState(() {
      this._show_serviceTypesProgress = false;
    });

    print(_serviceTypes);
  }

это модель, которую я сделал

enter image description here Я не знаю, в чем проблема, потому что возврат функции печати: []

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Проблема ясна, вы определяете image тип как Null, затем пытаетесь передать ему строку, попробуйте изменить определение .. вот так:

Class ServiceTypes{
  int id;
  String name;
  String image;
...
1 голос
/ 29 января 2020

Когда вы создаете модель, значение типа изображения равно нулю, поэтому модель создается с изображением типа Null, но когда изображения не имеют тип null с сервера, выдается ошибка

     type 'String' is not a subtype of type 'Null' in get method flutter 

, поскольку тип вашего изображения - String с сервера, и вы получаете значение по нулевому объекту, поэтому используйте объект типа String для получения строкового значения или изображений.

Используйте это

  Class ServiceTypes{
  String image;

вместо

   Class ServiceTypes{
   Null image;
...