Flutter - NoSuchMethodError: получатель 'length' был вызван на нуль - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь получить списки средних оценок от JSON rest API во Флаттере. При наличии значения рейтинга для всех продуктов просмотр списка отображается нормально, но когда у любого продукта есть пустая оценка, просмотр списка возвращает ошибку «NoSuchMethodError: Получатель« длина »был вызван для нуля. Получатель: нулевой. Пробный вызов: длина. Ниже мой код;

                             ListView.separated(
                                  separatorBuilder: (context, index) =>
                                      Divider(
                                        color: Colors.grey,
                                      ),
                                  padding: const EdgeInsets.all(5.0),
                                  itemCount: content.length,
                                  itemBuilder: (context, position) {
                                 final current = content[position];
                                    double myrate = double.parse(content[position].ratings);
                                    return Container(

                                           child: SmoothStarRating(
                                                    allowHalfRating: true,
                                                    onRatingChanged: (v) {
                                                    setState(() {});
                                                     },
                                                    starCount: 5,
                                                    rating: myrate,
                                                    halfFilledIconData: Icons.star_half,
                                                    size: 20.0,
                                                    filledIconData: Icons.star,
                                                    color: Colors.orange,
                                                    borderColor: Colors.orange,
                                                    spacing: 0.0)

                                                     )

                                            })

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Таким образом, я смог решить эту ошибку, просто добавив возврат «0», когда мой рейтинг пуст, и фактическое значение, когда он не пустой. С этой строкой кода:

double myrate = double.parse( content[position].ratings==null ? "0" : content[position].ratings);
0 голосов
/ 13 апреля 2020

вы должны учитывать все ситуации в вашем коде. например, когда список пуст или пуст, вы должны показать пользователю что-то еще. Вы должны изменить свой код на что-то вроде этого:

Container(
   child: content.length > 0 
   ? ListView.separated()
   : Text('there is no rate for this ...'),
)

, если ваши данные обнуляются, измените ваше условие на это:

    Container(
       child: (content?.length ?? 0) > 0 
       ? ListView.separated()
       : Text('there is no rate for this ...'),
    )
...