如何在Flutter中使用字符串插值来调用函数
How to user string interpolation in Flutter to call a function
我有 2 个方法,tappedNext()
和 tappedPrevious()
,我需要通过传递一个字符串变量来调用这个函数,例如 onTap: tapped + part + ()
,是否可以为这就像 tapped${part}()
?
我当然不建议你那样做。相反,使用简单的 if 语句。
但是既然你问是否可以..
简短回答,否(仅具有功能)。除非你在谈论方法,否则我们可以使用一些镜像。
需要导入镜像包,在dartpad上无法使用,请在本地测试:
import 'dart:mirrors';
class MyClass {
tappedNext() {
print('Next Function');
}
tappedPrevious() {
print('Previous Function');
}
}
现在您必须从 class 创建一个对象,创建它的镜像,然后使用 Symbol
以反射方式调用该方法。
void main() {
final clazz = MyClass();
final mirror = reflect(clazz);
final function = 'Next';
Symbol s = Symbol('tapped$function');
mirror.invoke(s, []).reflectee;
}
就是这样,控制台会打印:
Next Function
要将表达式的值放入字符串中,请使用 ${expression}
。如果表达式是标识符,则可以省略 {}
.
以下是一些使用字符串插值的示例:
String '${3 + 2}' = Result '5'
String '${"word".toUpperCase()}' = Result = 'WORD'
String '$myObject' = Result - The value of myObject.toString()
代码示例
下面的函数接受两个整数作为参数。使其 return 成为一个字符串,其中包含由 space 分隔的两个整数。例如,stringify(2, 3)
应该 return '2 3'
.
String stringify(int x, int y) {
return '$x $y';
}
我有 2 个方法,tappedNext()
和 tappedPrevious()
,我需要通过传递一个字符串变量来调用这个函数,例如 onTap: tapped + part + ()
,是否可以为这就像 tapped${part}()
?
我当然不建议你那样做。相反,使用简单的 if 语句。 但是既然你问是否可以..
简短回答,否(仅具有功能)。除非你在谈论方法,否则我们可以使用一些镜像。
需要导入镜像包,在dartpad上无法使用,请在本地测试:
import 'dart:mirrors';
class MyClass {
tappedNext() {
print('Next Function');
}
tappedPrevious() {
print('Previous Function');
}
}
现在您必须从 class 创建一个对象,创建它的镜像,然后使用 Symbol
以反射方式调用该方法。
void main() {
final clazz = MyClass();
final mirror = reflect(clazz);
final function = 'Next';
Symbol s = Symbol('tapped$function');
mirror.invoke(s, []).reflectee;
}
就是这样,控制台会打印:
Next Function
要将表达式的值放入字符串中,请使用 ${expression}
。如果表达式是标识符,则可以省略 {}
.
以下是一些使用字符串插值的示例:
String '${3 + 2}' = Result '5'
String '${"word".toUpperCase()}' = Result = 'WORD'
String '$myObject' = Result - The value of myObject.toString()
代码示例
下面的函数接受两个整数作为参数。使其 return 成为一个字符串,其中包含由 space 分隔的两个整数。例如,stringify(2, 3)
应该 return '2 3'
.
String stringify(int x, int y) {
return '$x $y';
}