Во Flutter, является ли это анти-паттерном, когда виджет State предоставляет набор методов publi c? - PullRequest
0 голосов
/ 08 марта 2020

Я видел, что GlobalKey можно использовать для получения текущего состояния элемента и вызова для него методов publi c:

  • Это обычный подход для изменения элемента состояние или чтение из состояния?
  • Или лучше предоставить соответствующие аргументы в конструкторе виджета? Помогли с ValueNotifier и друзьями
  • ... или оба варианта гибкости использования?

Пример:

GlobalKey<SomeWidgetState> widgetKey = GlobalKey<SomeWidgetState>();

[...]
  SomeWidget(key: widgetKey),
  GestureDetector(
    onTap: () {
      widgetKey.currentState.doSomething();
      widgetKey.currentState.getSomething();
    })

против

  bool animate = false;
  ValueNotifier valueNotifier;

  SomeWidget(listenableValue: valueNotifier, animateSomething: animate),
  GestureDetector(
    onTap: () {
      animate != animate;
    })
...