Let's say I have a class that contains a function passed during its initialization:

```dart
class Caller {
  final _controller = StreamController<int>();

  Caller(void Function(int) callback) {
      _controller.stream.listen(callback);
  }

  void send(int x) {
    _controller.sink.add(x)
  }
}

```

Is is possible to initialize a `Caller` with another class method while also marking it as `final`?

```dart
class Container {
  final Caller _caller;
  int _val = 0;

  void _doSomething(int x) {
    _val += x;
    _caller.send(_val);
  }

  Container() : _caller = Caller(_doSomething);
}

```

Dart complains that `"Only static members can be accessed in initializers."` I understand that you can't access uninitialized parameters before the constructor is called, but isn't a "method" actually final by default? It cannot be modified dynamically unlike other attributes.

So, it there any workaround beside marking `_caller` non-final and initializing it in the constructor?