Flutter调用带有字符串的dynamicaly函数属性

问题描述

希望使用字符串“ album”来调用Icons.album,例如Icons [“ album”],但这是行不通的。我需要为每个图标做枚举还是其他方法

List tasks = [{
    "title": "task 1","description": "description 1","icon": "ring_volume",},{
    "title": "task 2","description": "description 2","icon": "flag",{
    "title": "task 3","description": "description 3","icon": "album",];

[...]

  Widget taskCard(Map task) {
    Text title = Text(task['title']);
    return Center(
      child: Card(
        child: Column(
          mainAxisSize: MainAxisSize.min,children: <Widget>[
             ListTile(
              leading: Icons(Icons.album),// HERE
              title: new Text(task['title']),subtitle: new Text(task['description']),),],);

  }

解决方法

您不能调用Icons["album"]这样的图标,但是可以在这样的地图中存储IconData

List tasks = [{
    "title": "task 1","description": "description 1","icon": Icons.ring_volume,},{
    "title": "task 2","description": "description 2","icon": Icons.flag,{
    "title": "task 3","description": "description 3","icon": Icons.album,];

然后在用户界面中将其命名为task['icon']

  Widget taskCard(Map task) {
    Text title = Text(task['title']);
    return Center(
      child: Card(
        child: Column(
          mainAxisSize: MainAxisSize.min,children: <Widget>[
             ListTile(
              leading: Icons(task['icon']),// HERE
              title: new Text(task['title']),subtitle: new Text(task['description']),),],);

  }
,

您应该使用此:

在字典中:

ShardIteratorType#LATEST

和小部件中的

"icon": Icons.album