flutter - 如何剪裁圆形?
问题描述
我有Column
并且在里面我使用了 7Expanded
个小部件,其中一个是ClipRRect
,但有一个问题:它不是圆形。
我认为有两种方法:
用容器包裹它并为其宽度赋予高度值,但我不知道如何?
使用另一个小部件?
当我使用CachedNetworkImage
时,我不能使用CircleAvatar
。
Expanded(),
Expanded(),
Expanded(),
Expanded(
flex: 5,
//padding: EdgeInsets.symmetric(horizontal: 10),
child: TabBarView(
controller: _tabController,
children: <Widget>[
Center(
child: Text(
'tracks',
style: TextStyle(color: Colors.white),
)),
Container(
height: 20,
width: 20,
color: Colors.red,
child: AnimatedBuilder(
animation: _animationController,
child: AspectRatio (
aspectRatio: 1,
child: ClipOval(
//borderRadius: BorderRadius.circular(10000000.0),
child: CachedNetworkImage(
fit: BoxFit.cover,
imageUrl: thisSongInfo.albumImageUrl,
),
),
),
builder: (BuildContext context, Widget child) {
return Transform.rotate(
child: child,
angle: _animationController.value * 2.0 * math.pi,
);
},
),
),
Center(
child: Text(
'information',
style: TextStyle(color: Colors.white),
),
),
],
),
),
Expanded(),
Expanded(),
Expanded(),
我编辑并将所有代码放入扩展的代码中,我还放入了 debugPaintSizeEnabled = true; 我的主要链接: https ://imge.to/i/fU8vi
解决方案
用值为 1的小部件包装您ClipRRect
的小部件。这会强制子小部件为方形。AspectRatio
aspectRation
或者,如果合适,使用一个CircleAvatar
以圆圈显示其子项的小部件 - 这可以同时替换 theAspectRatio
和ClipRRect
小部件。
编辑:这实际上是因为TabBarView
它出于某种原因迫使它的孩子是全宽的。将子元素包裹TabBarView
在 a 内,Row
以便它可以水平调整自身大小。