首页 > 解决方案 > 如何为函数类型的可选位置参数设置默认值?

问题描述

我将函数作为可选参数传递给构造函数,但我无法分配默认值。

void main() {
  Person p = Person();
  print(p.foo('Hello'));
}

class Person {
  final String Function(String) foo;
  Person({this.foo});
}

现在尝试分配默认值:Person({this.foo = (val) {return val;}); 产生错误:Error: Not a constant expression.我知道参数必须是const,但使用const或什至在static前面(val) {return val;}不起作用。

有谁知道如何解决这个问题?

标签: dart

解决方案


你可以试试这个:

void main() {
  Person pLower = Person(foo: (a) => a.toLowerCase());
  print(pLower.foo('Hello'));
  Person pDefault = Person();
  print(pDefault.foo('Hello'));
}

class Person {
  static String defaultFoo(String a) => a.toUpperCase();
  final String Function(String) foo;
  Person({this.foo = defaultFoo});
}

输出

hello
HELLO

推荐阅读