flutter - 围绕文本的圆圈,当它很长时延伸到椭圆形(颤振)
问题描述
我正在尝试实现以下行为:当文本长度超过 1 位时,文本周围会变成椭圆形。当然,应该是动态的,比如在whatsapp上:
这是我尝试过的,但这不是您所看到的最佳实践(定位小部件是因为它在堆栈上):
if (num > 99) {
return Positioned(
right: 0,
top: 5,
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: Container(
width: 30,
height: 20,
decoration: new BoxDecoration(
color: orange,
),
child: Center(child:Text("99+",
style: TextStyle(
color: listBackground,
fontWeight: FontWeight.bold,
fontSize: 12,
fontFamily: 'Roboto-Regular',
)),
) )));
}
String value = num > 9? "9+" : num.toString();
return Positioned(
right: 0,
top: 5,
child: CircleAvatar(
radius: 10.0,
backgroundColor: orange,
child: Text(value,
style: TextStyle(
color: listBackground,
fontWeight: FontWeight.bold,
fontSize: 12,
fontFamily: 'Roboto-Regular',
))),
);
有更好的想法吗?
解决方案
您可以像这样使用带有填充和 BorderRadius 的容器:
Widget build(BuildContext context) {
return Container(
decoration: const BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.all(
Radius.circular(15.0),
),
),
padding: const EdgeInsets.symmetric(vertical: 4.0, horizontal: 8.0),
child: const Text('2'),
);
}
我在 dartpad 上运行它,它看起来像这样:
推荐阅读
- clojurescript - 他们是否使用 clojurescript 转译器来转译转译器?
- azure-pipelines - Azure 管道将“sa”替换为“***”——我该如何配置?
- c - 如何在C中使用数组地址参数按值函数循环传递
- android - 在 react native 中选择下拉项时显示文本输入字段
- javascript - 如何修复由 .get() 方法调用的 URL 生成的 CORB 错误?
- javascript - 使用 Ajax 从表中删除项目
- python - 是否有在 Python 中增加时间戳的函数
- android - getStableInsetTop() 总是返回 0?
- c - LPC2148 UART中断
- react-native - 异步/等待函数返回 _40: 0, _65: 0, _55: null, _72: null