Search code examples
dart

How to specify a default value of a function parameter?


This function should transform each element of the list with the given function transform:

void _doSomething(List<Something> numbers, [transform(Something element)]) {...}

As I don't want to skip this method when the transform should not do anything, I wanted to give a default value to the transform method like this:

void _doSomething(List<Something> numbers, 
                  [transform(Something element) = (v) => v]) {...}

Unfortunately, the editor tells me

Expected constant expected

Is there some workaround or simply not possible (or shouldn't be done like this at all)?


Solution

  • You can define the default function as private method :

    _defaultTransform(Something v) => v;
    void _doSomething(List<Something> numbers, 
                      [transform(Something element) = _defaultTransform]) {...}
    

    Or check argument like this :

    void _doSomething(List<Something> numbers, [transform(Something element)]) {
      if (!?transform) transform = (v) => v;
      ...
    }
    

    Or like Ladicek suggests :

    void _doSomething(List<Something> numbers, [transform(Something element)]) {
     transform ??= (v) => v;
      ...
    }