我使用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,
);
}),
);