当前位置:网站首页>Shutter: add gradient stroke to font
Shutter: add gradient stroke to font
2022-07-03 12:06:00 【J_ D_ Chi】
List of articles
Write it at the front
Achieve the effect shown in the figure below , This number has gradients inside and outside .
Content
Realize stroke
Search the Internet for a round , You can see by using Stack, Let's make two Text superposition , And to the previous Text Set external stroke , You can get the following results .
Stack(
alignment: Alignment.center,
children: [
Text(
'100',
style: TextStyle(
fontSize: 40,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.black),
),
Text(
'100',
style: TextStyle(
color: Colors.white,
fontSize: 40,
fontWeight: FontWeight.bold),
),
],
)
Achieve gradient
Color gradient use ShaderMask To process , It can help us calculate the rectangle of the text , Then we set it directly to LinearGradient that will do .
In the use of ShaderMask When , The color of the font needs to be white . Due to stroke Text We use foreground To add stroke , Therefore, the color setting should also be handled here , Not like another Text equally , stay TextStyle Inside color Property settings , Otherwise, an error will be reported .
Stack(
alignment: Alignment.center,
children: [
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF8F1FFF), Color(0xFFFF00FF)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'100',
style: TextStyle(
fontSize: 40,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.white),
),
),
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.white, Color(0xFFFFBDE9)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'100',
style: TextStyle(
color: Colors.white,
fontSize: 40,
fontWeight: FontWeight.bold),
),
)
],
)

Some adjustments
The above has basically achieved our initial effect , But there is still a problem , That is, there is some whiteness on the edge of the text , This is because of the tracing strokeWidth Some big , It exceeds the rectangular range of the text , Our gradient rendering range is only within the rectangle .
It can be seen here that some parts have crossed the left and right borders :
If you use English characters , It will be more obvious :
For these situations , I am currently dealing with two kinds :
- For the case of left and right boundaries , Add white space characters before and after the text :

- For the case of upper and lower boundaries , adjustment
TextStyleinheightattribute :
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF8F1FFF), Color(0xFFFF00FF)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'you',
style: TextStyle(
fontSize: 40,
height: 1.4,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.white),
),
)
Reference resources
How to decorate text stroke in Flutter?
How to create gradient text in Flutter
边栏推荐
- Oracle advanced (I) realize DMP by expdp impdp command
- cgroup简介
- Dart: About zone
- Capturing and sorting out external Fiddler -- Conversation bar and filter [2]
- Is BigDecimal safe to calculate the amount? Look at these five pits~~
- Socket TCP for network communication (I)
- Momentum of vulnhub
- vulnhub之Ripper
- 小鹏 P7 撞护栏安全气囊未弹出,官方回应称撞击力度未达到弹出要求
- Cacti监控Redis实现过程
猜你喜欢
随机推荐
Vulnhub pyexp
(database authorization - redis) summary of unauthorized access vulnerabilities in redis
Unity3D学习笔记5——创建子Mesh
AOSP ~ NTP (Network Time Protocol)
Shardingsphere sub database and sub table < 3 >
利用Zabbix动态监控磁盘I/O
[learning notes] DP status and transfer
836. Merge sets (day 63) and search sets
win10 上PHP artisan storage:link 出现 symlink (): Protocol error的解决办法
Dart: about grpc (I)
Vulnhub's cereal
Vulnhub's Nagini
pragma-pack语法与使用
(构造笔记)从类、API、框架三个层面学习如何设计可复用软件实体的具体技术
牛牛的组队竞赛
安装electron失败的解决办法
PHP导出word方法(一mht)
Go语言实现静态服务器
(construction notes) grasp learning experience
Dart: about Libraries








