Flutter-NoSuchMethodError:在null上调用了吸气剂“长度”

时间:2020-04-13 19:34:38

标签: flutter rating ratingbar rating-system

我正在尝试从Flutter中的JSON rest API获取平均评分列表。当所有产品都具有评级值时,列表视图显示正常,但是当任何产品的评级为空时,列表视图返回错误“ NoSuchMethodError:在null上调用getter'length'。接收器:null。尝试调用:length。以下是我的代码;

                             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 :(得分:0)

您应该考虑代码中的所有情况。例如,当列表为null或为空时,您应该向用户显示其他内容。您应该将代码更改为以下内容:

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 ...'),
    )

答案 1 :(得分:0)

因此,我能够通过以下方式解决此错误:仅在我的评分为空时添加返回“ 0”,而在不为空时添加实际值。使用以下代码行:

double myrate = double.parse( content[position].ratings==null ? "0" : content[position].ratings);