Как сохранить значение, полученное методом, в другом экземпляре переменной? - PullRequest
0 голосов
/ 12 июля 2020

Как сохранить значение, полученное методом, в другом экземпляре переменной?

Я хочу сохранить значение, переданное в Statefulwidget, в экземпляре, который я не могу сделать. Вот как я передаю значение методу Statefulwidget.

_MyHomePageState().getprints(state1);

Но не могу сохранить данные в экземпляре в StatefulWidget, пожалуйста, проверьте комментарии, чтобы узнать, что работает, что не работает

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

Как сохранить в инстансе во флаттере?

1 Ответ

1 голос
/ 13 июля 2020

Это скорее вопрос «дротик», чем вопрос «трепыхаться». Поэтому я только что проверил код в dartpad.dev

Дело в том, что он сохраняется в state1. Но дело в том, что вы не можете ссылаться на него с другим экземпляром, потому что тогда этот экземпляр будет вновь созданным экземпляром и будет иметь другое значение для state1. Решение? Вы можете сделать state11 переменной stati c, и вместо вызова экземпляра вы вызываете его напрямую с классом. Примерно так:

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, я бы рекомендовал использовать первый способ.

...