如何从外部将属性milks赋值给变量activeMilk?解决widget初始化器访问错误
解决"实例成员'widget'无法在初始化器中访问"的问题
这个错误是因为Flutter中类成员变量的初始化代码执行时机过早,此时widget实例还没完成初始化,没法直接访问它的属性。给你三种可行的解决办法:
延迟初始化(用
late关键字)
适合只需要初始化一次、后续不随widget.milks变化的场景:late final activeMilk = widget.milks;它会在你第一次访问
activeMilk时才去读取widget.milks,这时候widget已经准备好了。在
initState中赋值(StatefulWidget专属)
如果是在State类里,把赋值逻辑放到initState方法里,这个方法是在widget初始化完成后执行的:var activeMilk; @override void initState() { super.initState(); activeMilk = widget.milks; }要是
widget.milks后续可能更新,记得加上didUpdateWidget来同步更新:@override void didUpdateWidget(covariant YourWidget oldWidget) { super.didUpdateWidget(oldWidget); if (oldWidget.milks != widget.milks) { activeMilk = widget.milks; } }用getter实时获取
如果需要activeMilk始终和widget.milks保持一致,直接写个getter:get activeMilk => widget.milks;每次访问
activeMilk都会返回最新的widget.milks值。
内容的提问来源于stack exchange,提问作者yaroslav ravlushevich
相关产品推荐
相关产品推荐

