0

如何将通过方法接收的值存储在另一个变量实例中?

我想将传递给 Statefulwidget 的值存储在我无法执行的实例中。这就是我将值传递给 Statefulwidget 方法的方式。

_MyHomePageState().getprints(state1);

但无法将数据存储在 StatefulWidget 中的实例中,请查看评论以查看哪些工作正常哪些不工作

var state11;
getprints(var state1){
 
   print("hello");
   print(state1); //this works
   state11 = state1; // this does not works
}

我应该如何将它保存在颤动的实例中?

4

1 回答 1

0

这更像是一个“飞镖”问题,而不是一个“颤抖”问题。所以我只是在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 小部件,因此我建议您使用第一种方法。

于 2020-07-13T01:50:05.993 回答