Флаттер: как мне вызвать функцию внутри класса состояния ИЛИ получить доступ к атрибуту класса состояния? - PullRequest
0 голосов
/ 12 ноября 2018

Из класса StatefulWidget я хочу вызвать функцию в классе State следующим образом:

class Parent extends StatefulWidget{

  // access _ParentState: iWantToAccessThis
  // OR
  // run from _ParentState: iWantToRunThis

  @override
  _ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
  List<Object> iWantToAccessThis;
  void iWantToRunThis(){
    // do something
  }
  ...
}

ОБНОВЛЕНИЕ: нашел обходной путь, сделав мой список статическим списком. Поскольку всегда будет одна версия списка, это будет работать. Однако я все еще хотел бы получить правильный ответ для запуска функций внутри состояния или для доступа к атрибутам, которые не являются списками или статическими (хотя я склоняюсь к невозможности доступа к нестатическим атрибутам).

class Parent extends StatefulWidget{

  static void _getList(){
    _ParentState._iWantToAccessThis;
  }

  @override
  _ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
  static List<Object> _iWantToAccessThis;
  List<Object> get iWantToAccessThis => _iWantToAccessThis;
  ...
}

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете просто сделать это, но я бы не рекомендовал это

class _MyWidget extends StatefulWidget {
  State state;
  @override
  State<StatefulWidget> createState() {
    state = _MyWidgetState();
    return state;
  }
}

Я думаю, что могут быть другие способы решения вашей проблемы, затем доступ к состоянию из виджета

...