gpt4 book ai didi

flutter - 如何使用字符串访问属性或方法?

转载 作者:行者123 更新时间:2023-12-03 03:24:46 25 4
gpt4 key购买 nike

我使用 fluttericon.com 创建了自定义字体图标,如下所示:

// fa_pro_light_icons.dart
import 'package:flutter/widgets.dart';

class FaProLight {
FaProLight._();

static const _kFontFam = 'FaProLight';

static const IconData cash_register = const IconData(0xe800, fontFamily: _kFontFam);
static const IconData chart_pie = const IconData(0xe801, fontFamily: _kFontFam);
}

我从服务器获取我的图标名称作为字符串
// dummy_data.dart
const SAY_SOME_DUMMY_DATA = const [
MyModel(id: '1', icon: 'cash_register'),
MyModel(id: '1', icon: 'chart_pie'),
];

我的模型看起来像这样:
class MyModel {
final String id;
final String icon;

const MyModel({ this.id, this.icon });
}

我的列表构建器如下所示:
Widget _listItemBuilder(BuildContext context, int index) {
const items = SAY_SOME_DUMMY_DATA;
return ListItem(
avatar: CircleAvatar(
child: Icon(FaProLight.cash_register) // this work - no problem
child: Icon(FaProLight.[items[index].icon]) // But, How to make this work?
),
);
}

所以,我的问题是:
如何使这项工作 FaProLight.[items[index].icon]正如刚才提到的?

最佳答案

你不能在 Dart 中使用字符串访问成员,但是,你可以简单地将你的成员转换为 map :

class FaProLight {
FaProLight._();

static const _kFontFam = 'FaProLight';

static const Map<String, IconData> icons = {
'cash_register': IconData(0xe800, fontFamily: _kFontFam),
'chart_pie': IconData(0xe801, fontFamily: _kFontFam),
};
}

现在,您可以像这样访问它的图标:

CircleAvatar(
child: Icon(FaProLight.icons[items[index].icon]),
)

关于flutter - 如何使用字符串访问属性或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58981636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com