这更像是一个“飞镖”问题,而不是一个“颤抖”问题。所以我只是在dartpad.dev中测试了代码
问题是,它确实存储在 state1 中。但问题是,你不能用另一个实例来引用它,因为那个实例将是一个新创建的实例,并且 state1 的值不同。解决方案?您可以将 state11 设为静态变量,而不是调用实例,而是直接使用类调用它。像这样:
void main() {
print(MyHomePageState.state11); //Line 1
MyHomePageState().getprints('Some state');
print(MyHomePageState.state11); //Line 4
}
class MyHomePageState {
static var state11;
getprints(var state1) {
print("hello"); //Line 2
print(state1); //Line 3
state11 = state1;
}
}
输出为:
null
hello
Some state
Some state
这确保了 state1 值的变化反映在类的所有实例中。
或者...您可以将实例存储在变量中,然后调用该实例的变量。
void main() {
var homePage = MyHomePageState();
homePage.getprints('Some state');
print(homePage.state11); //Line 3
}
class MyHomePageState {
var state11;
getprints(var state1) {
print("hello"); //Line 1
print(state1); //Line 2
state11 = state1;
}
}
输出为:
hello
Some state
Some state
但是由于您将其用于 HomePage 小部件,因此我建议您使用第一种方法。