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

How to store the value received through a method in another variable instance?

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

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

_MyHomePageState().getprints(state1);

但无法将数据存储在 StatefulWidget 的实例中,请查看评论以了解哪些有效哪些无效

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

在flutter中如何保存到实例中?

与 'flutter' 相比,这更像是一个 'dart' 问题。所以我刚刚测试了 dartpad.dev

中的代码

事实是,它确实存储在 state1 中。但问题是,您不能用另一个实例引用它,因为该实例将是一个新创建的实例,并且对 state1 具有不同的值。解决方案? 您可以将 state11 设为静态变量,而不是调用实例,而是直接使用 class 调用它。像这样:

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 值的变化反映在 class 的所有实例中。

或者... 您可以将实例存储在一个变量中,然后调用该实例的变量。

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

但是由于您将其用于主页小部件,我建议您使用第一种方法。