【发布时间】:2020-04-02 17:26:50
【问题描述】:
在Flutter 中,我怎样才能像下图一样绘制边框半径选项卡指示器?
以下代码只能绘制我在github中找到的圆形指示器。
TabBar(
isScrollable: true,
controller: _tabController,
labelColor: Colors.black,
tabs: <Widget>[
Tab(
text: 'DOTTED',
),
Tab(
text: 'Tab',
),
Tab(
text: 'INDICATOR',
),
],
indicator: DotIndicator(
indicatorColor: Colors.black,
radius: 3,
),
indicatorWeight: 2 * kDefaultDotIndicatorRadius,
),
图书馆:
const kDefaultDotIndicatorRadius = 3.0;
class DotTabIndicator extends Decoration {
const DotTabIndicator({this.indicatorColor, this.radius = kDefaultDotIndicatorRadius});
final Color indicatorColor;
final double radius;
@override
BoxPainter createBoxPainter([onChanged]) {
return _DotPainter(this, onChanged);
}
}
class _DotPainter extends BoxPainter {
_DotPainter(this.decoration, VoidCallback onChanged) : super(onChanged);
final DotTabIndicator decoration;
@override
void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
final center = configuration.size.center(offset);
final dy = configuration.size.height;
final newOffset = Offset(center.dx, dy - 8);
final paint = Paint();
paint.color = decoration.indicatorColor;
paint.style = PaintingStyle.fill;
canvas.drawCircle(newOffset, decoration.radius, paint);
}
}
【问题讨论】:
-
在哪里调用了
DotTabIndicator构造函数? -
@pskink 此代码是另一个库的示例,该库用于制作点制表符
-
你为什么不使用ShapeDecoration而不是另一个库?
-
@pskink 我不知道如何为标签指示器绘制这个形状
-
indicator: ShapeDecoration(...)