大家,我在嘗試從串列中呈現所選圖示時遇到問題,下面是我的代碼。iconlist 包含所有圖示的串列
List<Widget> selectedIcon = []; //updated
List<IconData> iconList = [
Icons.cake,
Icons.add_location_sharp,
Icons.zoom_in_outlined,
Icons.auto_awesome_motion,
Icons.call_end_sharp,
Icons.equalizer_rounded,
Icons.wifi_lock,
Icons.mail,
];
我通過 iconlist 映射并將所選圖示添加到 selectedIcon 陣列中,那么,如何顯示所選圖示?。謝謝
我嘗試了 Icon(selectedIcon),但回傳了上述錯誤
Wrap(
children: iconList.map((icon) {
return GestureDetector(
onTap: () {
if (selectedIcon.contains(icon)) {
selectedIcon.remove(icon);
} else {
selectedIcon.add(icon);
print(selectedIcon);
}
},
child: Icon(icon));
}).toList(),
);
uj5u.com熱心網友回復:
您正在添加,但是IconData當串列被宣告為時 List<Widget>,它期望有。WidgetIconData
您可以替換List<Widget> selectedIcon為 List<IconData> selectedIcon.
或者在添加專案時,使用 selectedIcon.add(Icon(icon));
您可以按照自己selectedIcon的方式映射iconList.
List<IconData> selectedIcon = [];
...
///show selected icons
Wrap(
children: selectedIcon.map((icon) {
return Icon(icon);
}).toList(),
),
Wrap(
children: iconList.map((icon) {
return GestureDetector(
onTap: () {
if (selectedIcon.contains(icon)) {
selectedIcon.remove(icon);
} else {
selectedIcon.add(icon);
}
setState(() {});
},
child: Icon(icon),
);
}).toList(),
),
要僅顯示選定的圖示,您可以使用可為空的資料。
IconData? selectedIcon;
//....
if (selectedIcon != null) Icon(selectedIcon),
Wrap(
children: iconList.map((icon) {
return GestureDetector(
onTap: () {
setState(() {
selectedIcon = icon;
});
},
child: Icon(icon),
);
}).toList(),
),
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430825.html
