使用 String 调用一个 WIdget Flutter
Use String to call a WIdget Flutter
以我为例:
我有 listTemplates 相同的:
List<TemplateModel> listTemplate = [
TemplateModel(
id: 1,
name: 'Temp_1',
previewBack: AppImages.TEMP_1,
previewFront: AppImages.TEMP_1,),
TemplateModel(
id: 2,
name: 'Temp_2',
previewBack: AppImages.TEMP_2,
previewFront: AppImages.TEMP_2),
TemplateModel(
id: 3,
name: 'Temp_3',
previewBack: AppImages.TEMP_3,
previewFront: AppImages.TEMP_3),
TemplateModel(
id: 4,
name: 'Temp_4',
previewBack: AppImages.TEMP_4,
previewFront: AppImages.TEMP_4),
];
我还有Temp_1(), Temp_2(), Temp_3(), Temp_4() 小部件。
我想按模板名称显示每个
例如:
Container(
child: `Temp_1`(), // It's my explain to try to show my problem, of course, it's not work.
);
我不想在这种情况下使用 if-else 或 switch-case 因为我的列表模板太大了.
感谢您的回答!
我认为现在不支持。对于这种情况,您使用正确的解决方案吗?
不,你不能。您可以使用的另一个选项 - Map.
final temperatureUI = {
1: Temp_1(),
...
}
然后
Container(
child: temperatureUI[templateModel.id],
);
以我为例: 我有 listTemplates 相同的:
List<TemplateModel> listTemplate = [
TemplateModel(
id: 1,
name: 'Temp_1',
previewBack: AppImages.TEMP_1,
previewFront: AppImages.TEMP_1,),
TemplateModel(
id: 2,
name: 'Temp_2',
previewBack: AppImages.TEMP_2,
previewFront: AppImages.TEMP_2),
TemplateModel(
id: 3,
name: 'Temp_3',
previewBack: AppImages.TEMP_3,
previewFront: AppImages.TEMP_3),
TemplateModel(
id: 4,
name: 'Temp_4',
previewBack: AppImages.TEMP_4,
previewFront: AppImages.TEMP_4),
];
我还有Temp_1(), Temp_2(), Temp_3(), Temp_4() 小部件。
我想按模板名称显示每个 例如:
Container(
child: `Temp_1`(), // It's my explain to try to show my problem, of course, it's not work.
);
我不想在这种情况下使用 if-else 或 switch-case 因为我的列表模板太大了.
感谢您的回答!
我认为现在不支持。对于这种情况,您使用正确的解决方案吗?
不,你不能。您可以使用的另一个选项 - Map
final temperatureUI = {
1: Temp_1(),
...
}
然后
Container(
child: temperatureUI[templateModel.id],
);