我正在使用 Flutter 制作有关电影的信息列表。现在我希望左边的封面图片是圆角图片。我做了以下,但没有奏效。谢谢!
getItem(var subject) {
var row = Container(
margin: EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
Container(
width: 100.0,
height: 150.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(8.0)),
color: Colors.redAccent,
),
child: Image.network(
subject['images']['large'],
height: 150.0,
width: 100.0,
),
),
],
),
);
return Card(
color: Colors.blueGrey,
child: row,
);
}
如下
https://i.stack.imgur.com/KTdOv.png
使用 ClipRRect
它将完美运行。
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: Image.network(
subject['images']['large'],
height: 150.0,
width: 100.0,
),
)
1.圆形图片(无边框)
https://i.stack.imgur.com/UHa1c.png
Using CircleAvatar: CircleAvatar( radius: 48, // 图像半径 backgroundImage: NetworkImage('imageUrl'), )
使用 ClipRRect: ClipOval( child: SizedBox.fromSize( size: Size.fromRadius(48), // 图像半径 child: Image.network('imageUrl', fit: BoxFit.cover), ), )
2.圆形图片(带边框)
https://i.stack.imgur.com/HiVO6.png
使用 CircleAvatar: CircleAvatar( radius: 56, backgroundColor: Colors.red, child: Padding( padding: const EdgeInsets.all(8), // 边框半径 child: ClipOval(child: Image.network('imageUrl')), ) , )
Using ClipRRect: Container( padding: EdgeInsets.all(8), // 边框宽度装饰: BoxDecoration(color: Colors.red, shape: BoxShape.circle), child: ClipOval( child: SizedBox.fromSize( size: Size.fromRadius (48), // 图像半径 child: Image.network('imageUrl', fit: BoxFit.cover), ), ), )
3. 圆角图片(无边框)
https://i.stack.imgur.com/AAxpw.png
ClipRRect(
borderRadius: BorderRadius.circular(20), // Image border
child: SizedBox.fromSize(
size: Size.fromRadius(48), // Image radius
child: Image.network('imageUrl', fit: BoxFit.cover),
),
)
4. 圆角图片(带边框)
https://i.stack.imgur.com/D1QqH.png
final borderRadius = BorderRadius.circular(20); // Image border
Container(
padding: EdgeInsets.all(8), // Border width
decoration: BoxDecoration(color: Colors.red, borderRadius: borderRadius),
child: ClipRRect(
borderRadius: borderRadius,
child: SizedBox.fromSize(
size: Size.fromRadius(48), // Image radius
child: Image.network('imageUrl', fit: BoxFit.cover),
),
),
)
还有其他方法,例如使用 DecoratedBox
,但这会使答案有点过长。
你也可以使用flutter自带的CircleAvatar
CircleAvatar(
radius: 20,
backgroundImage: NetworkImage('https://via.placeholder.com/140x100')
)
backgroundImage: member[index].picture == null ? Image(image: AssetImage('assests/no-image.png')) : NetworkImage( member[index].picture,
试试这个,对我有用:
Container(
width: 100.0,
height: 150.0,
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.cover, image: NetworkImage('Path to your image')),
borderRadius: BorderRadius.all(Radius.circular(8.0)),
color: Colors.redAccent,
),
),
Container
的边框属性应在 ClipRRect
之前使用,因为它对处理器的开销很大。如果您使用 Image.asset()
或 Image.network()
,这将不适用于 Container
的图像属性,因此您可以分别使用 AssetImage()
和 NetworkImage()
。
Container(
width: 48.0,
height: 48.0,
decoration: new BoxDecoration(
shape: BoxShape.circle,
image: new DecorationImage(
fit: BoxFit.fill,
image: NetworkImage("path to your image")
)
)),
https://i.stack.imgur.com/aeQxq.png
CircleAvatar(
radius: 45,
child: ClipOval(
child: CachedNetworkImage(
imageUrl: "https:// your image url path",
fit: BoxFit.cover,
width: 80,
height: 80,
),
),
),
如果你也想要边框,然后添加
backgroundColor: Colors.deepOrangeAccent,
在这里面
https://i.stack.imgur.com/V1Tqw.png
CircleAvatar(
radius: 45,
backgroundColor: Colors.deepOrangeAccent,
child: ClipOval(
child: CachedNetworkImage(
imageUrl: "https:// your image url path",
fit: BoxFit.cover,
width: 80,
height: 80,
),
),
),
对于图像使用这个
ClipOval(
child: Image.network(
'https://url to your image',
fit: BoxFit.fill,
),
);
而对于资产图像使用这个
ClipOval(
child: Image.asset(
'Path to your image',
fit: BoxFit.cover,
),
)
你可以像这样使用 ClipRRect :
Padding(
padding: const EdgeInsets.all(8.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(25),
child: Image.asset(
'assets/images/pic13.jpeg',
fit: BoxFit.cover,
),
),
)
您可以为左上角或左下角设置半径或用户,例如:
Padding(
padding: const EdgeInsets.all(8.0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25)
,bottomLeft: Radius.circular(25)),
child: Image.asset(
'assets/images/pic13.jpeg',
fit: BoxFit.cover,
),
),
)
使用新版本的颤振和材质主题,您也需要使用“填充”小部件,以获得不填充其容器的图像。
例如,如果您想在 AppBar 中插入圆形图像,您必须使用填充,否则您的图像将始终与 AppBar 一样高。
希望这会对某人有所帮助
InkWell(
onTap: () {
print ('Click Profile Pic');
},
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ClipOval(
child: Image.asset(
'assets/images/profile1.jpg',
),
),
),
),
这是我使用的代码。
Container(
width: 200.0,
height: 200.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('Network_Image_Link')),
color: Colors.blue,
borderRadius: BorderRadius.all(Radius.circular(25.0)),
),
),
谢谢!!!
将 ClipRRect 与设置的图像属性配合使用:BoxFit.fill
ClipRRect(
borderRadius: new BorderRadius.circular(10.0),
child: Image(
fit: BoxFit.fill,
image: AssetImage('images/image.png'),
width: 100.0,
height: 100.0,
),
),
使用 ClipRRect 它将解决您的问题。
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
child: Image.network(
Constant.SERVER_LINK + model.userProfilePic,
fit: BoxFit.cover,
),
),
输出:
https://i.stack.imgur.com/GWpcy.png
使用 BoxDecoration
Container(
margin: EdgeInsets.all(8),
width: 86,
height: 86,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: NetworkImage('https://i.stack.imgur.com/0VpX0.png'),
fit: BoxFit.cover
),
),
),
在这个圆圈图像中使用这种方式也可以工作+你也有网络图像的预加载器:
new ClipRRect(
borderRadius: new BorderRadius.circular(30.0),
child: FadeInImage.assetNetwork(
placeholder:'asset/loader.gif',
image: 'Your Image Path',
),
)
试试这个效果很好。
Container(
height: 220.0,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: new BorderRadius.only(
topLeft: Radius.circular(10),
topRight: Radius.circular(10),
),
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(
photoUrl,
),
),
),
);
容器的用户装饰图像。
@override
Widget build(BuildContext context) {
final alucard = Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.circular(10),
image: new DecorationImage(
image: new AssetImage("images/logo.png"),
fit: BoxFit.fill,
)
)
);
不定期副业成功案例分享
fit: BoxFit.fill
,看起来还不错。Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(3.0), border: Border.all(color: Colors.grey[300])), child: ClipRRect( borderRadius: BorderRadius.circular(3.0), child: Image.network( uri, fit: BoxFit.fill, width: imageDimension, height: imageDimension, ), ), )