如何在Flutter中使用用户字符串插值来调用函数

时间:2019-06-16 01:31:27

标签: flutter

我有2种方法,tappedNext()tappedPrevious(),我需要通过传递字符串变量来调用此函数,例如onTap: tapped + part + (),是否可以像这样进行字符串插值tapped${part}()吗?

2 个答案:

答案 0 :(得分:2)

要将表达式的值放入字符串中,请使用 ${expression}。如果表达式是标识符,则可以省略 {}

以下是使用字符串插值的一些示例:

String  '${3 + 2}'  =   Result '5'

String  '${"word".toUpperCase()}'   = Result = 'WORD'

String  '$myObject' = Result - The value of myObject.toString()
    

代码示例

以下函数接受两个整数作为参数。使它返回一个字符串,其中包含由空格分隔的两个整数。例如,stringify(2, 3) 应该返回 '2 3'

String stringify(int x, int y) {
  return '$x $y';
}

答案 1 :(得分:0)

我当然不建议您这样做。而是使用简单的if语句。 但是既然你问是否有可能..

简短回答,不(仅具有功能)。除非您在谈论方法,否则在那种情况下我们可以使用一些镜像。

您需要导入mirror包,它在dartpad上不起作用,因此请在本地进行测试:

import 'dart:mirrors';

class MyClass {
  tappedNext() {
    print('Next Function');
  }

  tappedPrevious() {
    print('Previous Function');
  }
}

现在,您必须从类中创建一个对象,创建一个对象的镜像,然后使用Symbol以反射方式调用该方法。

void main() {
  final clazz = MyClass();
  final mirror = reflect(clazz);

  final function = 'Next';

  Symbol s = Symbol('tapped$function');
  mirror.invoke(s, []).reflectee;
}

就这样,控制台将打印:

  

下一个功能