我創建了一個資源檔案夾來存盤我的影像。
part of 'resources.dart';
class IconImages {
IconImages._();
static const String test1 = 'assets/images/test1.jpg';
static const String test2 = 'assets/images/test2.jpg';
static const String test3 = 'assets/images/test3.jpg';
}
我將它們寫入地圖集合
final imagesIcon = <int, String>{
1: IconImages.test1,
2: IconImages.test2,
3: IconImages.test3,
};
然后將錄制的影像傳遞給按鈕。
icon: Image(image: AssetImage(imagesIcon.values.toString())),
// full button
Column(
children: [
Container(
color: Colors.lightBlueAccent,
child: IconButton(
icon: Image(image: AssetImage(imagesIcon.values.toString())),
onPressed: () {},),
),
SizedBox(height: 40,),
Container(
color: Colors.lightBlueAccent,
child: IconButton(
icon: Image(image: AssetImage(imagesIcon.values.toString())),
onPressed: () {},),
),
SizedBox(height: 40,),
Container(
color: Colors.lightBlueAccent,
child: IconButton(
icon: Image(image: AssetImage(imagesIcon.values.toString())),
onPressed: () {},),
),
],
),
當我執行我的代碼時,我得到以下例外

當我以這種形式傳輸影像時,一切正常
icon: Image(image: AssetImage(IconImages.test2)),
但是當我嘗試以這種方式從 Map 中獲取路徑時,會出現上述錯誤
icon: Image(image: AssetImage(imagesIcon.values.toString())),
uj5u.com熱心網友回復:
您使用錯誤的地圖:
IconButton(
icon: Image(image: AssetImage(imagesIcon[1].toString())),
onPressed: () {},
),
uj5u.com熱心網友回復:
我認為這可能是因為您將圖示作為字串傳遞。而不是使用具有以下類的影像:
ImageIcon(
AssetImage("images/icon.png"),
color: Colors.red,
size: 24,
),
編輯:在我的專案中重新創建情況后,我找到了背后的原因。您用于imagesIcon.values.toString()傳遞 Icon 的值。你檢查過這個函式回傳什么嗎?就我而言,它回傳了:
(assets/images/test1.jpg, assets/images/test2.jpg,
assets/images/test3.jpg)
難怪根據顫振影像無法讀取,因為那不是正確的路徑或檔案。
相反,您可以像這樣使用您的解決方案:
imagesIcon.values.elementAt(1) //0,1,2 whatever index you need from map
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/511444.html
標籤:扑图片镖例外
