Dart / Flutter-调用/执行存储在属性的字符串变量中的方法

时间:2018-12-16 04:31:47

标签: android ios dart flutter

我想创建一个动态的ListView,并且每个项目都具有一个来自json配置文件的onTap属性。

其余代码正常运行。

如何在onTap属性上调用此字符串存储命令?

此方法检索已加载的菜单并安装Listview

  Widget _itemBuilder(BuildContext context, int index) {
    Menu myMenu = Menu(menu[index]);
    return new ListTile(
      leading: new Text("-"),
      title: new Text("Comando ${myMenu.name}"),
      onTap: <myMneu.command>,
    );
  }

json文件

{
   "menu": [
      {
         "id": 1,
         "name": "Start",
         "command": "StartScreen()"
      },
      {
         "id": 2,
         "name": "Pause",
         "command": "PauseScreen()"
      },
      {
         "id": 3,
         "name": "Finish",
         "command": "FinishScreen()"
      }
   ]
}

2 个答案:

答案 0 :(得分:1)

您将必须将命令字符串映射到实际的方法调用:

  void executeCommand(String cmd) {
    switch(cmd) {
      case 'startScreen':
        startScreen();
        break;
      case 'pauseScreen':
        pauseScreen();
        break;
      case 'finishScreen':
        finishScreen();
        break;
    }
  }

答案 1 :(得分:0)

这将起作用

List callbacks = [
{
  'name': "test1",
  'callback': test,
},
{
  'name': "test2",
  'callback': test,
}
];

static test() {
    print("TIMER TEST");
}

Function.apply(callbacks['callback'], []);
// or
callbacks['callback'];

List callbacks2 = [
{
  'name': "test",
  'callback': () => test(),
},

];