surfstudio/SurfGear

relation. Типизация Action

Closed this issue · 2 comments

Здравствуйте!

Спасибо за апгрейд с null safety!

А так задумано, что если я типизирую Action как non-nullable
final someAction = Action<int>();
то в subscribe получается калбек c nullable
subscribe(someAction.stream, (int? param) {});
?

В каком случае туда null может прилететь?

class ExampleWm extends WidgetModel {
  ExampleWm(WidgetModelDependencies baseDependencies) : super(baseDependencies);

  // non-nullable type
  final someAction = Action<int>();

  @override
  void onBind() {
    super.onBind();
    // nullable
    subscribe(someAction.stream, (int? param) {});
  }
}

Там в реализации Action методы его вызова принимают опциональный параметр, ну то есть call([T? data])
Это сделано для того, чтобы Action<void> можно было использовать без параметров, и типизированный Action тоже не всегда может получить значение.

А void! Да так понятно.
Спасибо!