为什么会产生歧义?因为 TestWidget 是不可变的,所以它的每次变化都会导致自身被重新构建,也就是TestWidget内的count成员变量是不会被保存且二次使用的。但是此时count成员没有final声明,所以可以在某些情况下对count进行赋值,造成count成员好像被保存在TestWidget中被二次使用的错觉,容易产生歧义。
所以,不应该在不可变的Widget内声明非final的成员变量,Widget内的成员变量一般都要加上final声明避免歧义,如果需要对传入参数进行二次处理,比如需要对count进行判断,可以参考如下代码的处理方式。