Null检查操作符,当从提供程序将变量使用到另一个屏幕时,对空值使用



我使用provider进行状态管理。当我调用nullable (int?tipIndex)变量使用提供商在另一个类,我必须把!操作符……当我把!操作符我得到错误,null检查操作符上使用的空值…如何使变量初始值为null

提供商类代码:

int? tipIndex;
List<double> tipList = [2, 3, 5];

这里我分配tipIndex的值从ListView.builder

setState(() {
cart.tipIndex = index;
});

这里我用的是values

cart.tipList[index] == cart.tipList[cart.tipIndex!]

这里是完整列表视图构建器

ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: cart.tipList.length,
shrinkWrap: true,
itemBuilder: ((context, index) {
return tipContainer(context, cart.tipList[index].toInt(),
() {
setState(() {
cart.tipIndex = index;
});
},
cart.tipList[index] == cart.tipList[cart.tipIndex]
? const Color.fromARGB(255, 243, 164, 1)
.withOpacity(0.5)
: Colors.black54,
cart.tipList[index] == cart.tipList[cart.tipIndex]
? Colors.white
: Colors.transparent);
}),
);

UI

在实际使用之前,您应该通过检查cart.tipIndex是否为null来有条件地构建UI。它将是如下所示:

ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: cart.tipList.length,
shrinkWrap: true,
itemBuilder: ((context, index) {
return tipContainer(
context,
cart.tipList[index].toInt(),
() {
setState(() {
cart.tipIndex = index;
});
},
// Here
cart.tipIndex != null && cart.tipList[index] == cart.tipList[cart.tipIndex!]
? const Color.fromARGB(255, 243, 164, 1)
.withOpacity(0.5)
: Colors.black54,
// Here
cart.tipIndex != null && cart.tipList[index] == cart.tipList[cart.tipIndex!]
? Colors.white
: Colors.transparent,
);
}),
);

相关内容

  • 没有找到相关文章

最新更新