在我的flutter应用程序中,我希望当我按下IconButton时,该应用程序显示在新容器中单击的图像。 这是我的代码:
Widget build(BuildContext context) {
return Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
0 < favorites.length
? IconButton(
icon: Image.network(favorites[0]),
onPressed: (){
return new Container(
child: Column(
children: <Widget>[
Image.network(favorites[0])
],
),
);
},
)
: Container(),
]));
}
我希望我单击的图像显示在黑色矩形中: https://i.stack.imgur.com/YqOYa.png
答案 0 :(得分:1)
onPressed
的返回值将被忽略。
final VoidCallback onPressed;
从传递的回调中返回并不会不返回封闭函数(build()
),因此返回容器将没有任何作用。
您想要的是类似的东西
onPressed: () {
setState(() {isPressed = true;})
}
bool isPressed = false;
build() {
if(isPressed) {
return new Container(
child: Column(
children: <Widget>[
Image.network(favorites[0])
],
),
);
} else {
return /* as you have it in your question */
}
}
调用setState()
将导致build()
再次执行,您可以在其中检查单位isPressed
(或者更好地命名为wasPressed
)并这次返回不同的内容
答案 1 :(得分:0)
您必须执行以下操作:
List<String> favorites;
String selectedIcon;
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Row(children: favorites.map((String src) => IconButton(
icon: Image.network(src),
onPressed: (){
setState(() {
selectedIcon = src;
});
},
)).toList(),),
Container(
child: Image.network(selectedIcon),
)
],
);
}
此代码中没有对齐,样式和修饰,我认为您可以自己添加所需的内容