最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter實現(xiàn)漸變色加描邊字體效果

 更新時間:2021年11月26日 14:31:55   作者:J_D_Chi  
這篇文章介紹了Flutter實現(xiàn)漸變色描邊字體效果的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

寫在前面

實現(xiàn)如下圖的效果,這個數(shù)字的內(nèi)部和外部都有漸變色。

內(nèi)容

實現(xiàn)描邊

在網(wǎng)上搜索一輪,可以看到通過用?Stack,來讓兩個?Text疊加,并對上一個?Text設(shè)置外部描邊,就可以得到如下的效果。

 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),
              ),
            ],
          )

實現(xiàn)漸變

顏色的漸變使用 ShaderMask來進行處理,它可以幫我們計算出文字的矩形,然后我們直接設(shè)置給 LinearGradient即可。

在使用 ShaderMask的時候,字體的顏色需要是白色。由于描邊的 Text 我們使用 foreground來添加描邊,故顏色的設(shè)置也應該在這里處理,不能像另一個 Text 一樣,在 TextStyle 里的 color屬性設(shè)置,否則會報錯。

  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),
                ),
              )
            ],
          )

一些調(diào)整

上面已經(jīng)基本實現(xiàn)了我們最初的效果,但仍存在一點問題,就是文字描邊的邊緣部分有一些露白的情況,這是因為描邊的 strokeWidth有些大,超過了文字的矩形范圍,而我們的漸變渲染范圍只在矩形內(nèi)。

在這里可以看到是有部分越過了左右邊界:

如果用英文字符來看的話,會更明顯:

針對這些情況,我目前是兩種處理:

  • 對于左右邊界的情況,給文字前后添加空白字符:

  • 對于上下邊界的情況,調(diào)整?TextStyle里?height屬性:

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),
                ),
              )

參考

How to decorate text stroke in Flutter?
How to create gradient text in Flutter

到此這篇關(guān)于Flutters實現(xiàn)漸變色加描邊字體效果的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

茶陵县| 界首市| 兴海县| 霍城县| 淮滨县| 津南区| 长治市| 方山县| 光山县| 会理县| 巴林右旗| 樟树市| 梓潼县| 正安县| 繁昌县| 文登市| 阿克陶县| 鄂托克前旗| 泰和县| 安阳县| 溧阳市| 大足县| 南投县| 武功县| 遂溪县| 抚州市| 女性| 宝山区| 梁山县| 宁城县| 台东市| 建水县| 县级市| 沙田区| 信宜市| 溧阳市| 洛南县| 青铜峡市| 深水埗区| 原阳县| 和静县|