我正在尝试从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)
)
})
答案 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);