欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Flutter 中漸變的高級用法(3種)

 更新時間:2020年07月06日 09:56:23   作者:老孟  
這篇文章主要介紹了淺談Flutter 中漸變的高級用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Flutter 中漸變有三種:

  • LinearGradient:線性漸變
  •  RadialGradient:放射狀漸變
  • SweepGradient:扇形漸變

看下原圖,下面的漸變都是在此圖基礎(chǔ)上完成。

LinearGradient

給一張圖片添加從上到下的線性漸變:

ShaderMask(
 shaderCallback: (Rect bounds) {
  return LinearGradient(
   begin: Alignment.topCenter,
   end: Alignment.bottomCenter,
   colors: [Colors.red,Colors.blue,Colors.green],
  ).createShader(bounds);
 },
 blendMode: BlendMode.color,
 child: Image.asset(
  'assets/images/b.jpg',
  fit: BoxFit.cover,
 ),
)

beginend 表示漸變的方向,上面設(shè)置的方向是從頂部中間到底部中間。

color 表示漸變的顏色。

設(shè)置各個漸變色的結(jié)束點:

Color color = Colors.orange;
return ShaderMask(
 shaderCallback: (Rect bounds) {
  return LinearGradient(
    begin: Alignment.topCenter,
    end: Alignment.bottomCenter,
    colors: [color,color,Colors.transparent,Colors.transparent,color,color],
    stops: [0,.4,.41,.6,.61,1]
  ).createShader(bounds);
 },
 blendMode: BlendMode.color,
 child: Image.asset(
  'assets/images/b.jpg',
  fit: BoxFit.cover,
 ),
);

stops 的個數(shù)要對應(yīng) color

由于中間設(shè)置的漸變色為透明,所以中間是原圖。

RadialGradient

RadialGradient 是放射狀漸變。

ShaderMask(
   shaderCallback: (Rect bounds) {
    return RadialGradient(
     radius: .5,
     colors: <Color>[Colors.red, Colors.blue],
    ).createShader(bounds);
   },
   blendMode: BlendMode.color,
   child: Image.asset(
    'assets/images/b.jpg',
    fit: BoxFit.cover,
   ),
  )

實現(xiàn)中間顯示圓形原圖,其他地方有灰色蒙板:

ShaderMask(
 shaderCallback: (Rect bounds) {
  return RadialGradient(
   radius: .6,
   colors: <Color>[
    Colors.transparent,
    Colors.transparent,
    Colors.grey.withOpacity(.7),
    Colors.grey.withOpacity(.7)
   ],
   stops: [0, .5, .5, 1],
  ).createShader(bounds);
 },
 blendMode: BlendMode.srcATop,
 child: Image.asset(
  'assets/images/b.jpg',
  fit: BoxFit.cover,
 ),
)

SweepGradient

SweepGradient 扇形漸變效果。

ShaderMask(
 shaderCallback: (Rect bounds) {
  return SweepGradient(
   colors: <Color>[
    Colors.red,
    Colors.blue
   ],
  ).createShader(bounds);
 },
 child: Image.asset(
  'assets/images/b.jpg',
  fit: BoxFit.cover,
 ),
)

startAngleendAngle 表示開始和結(jié)束角度。

繪制漸變圓環(huán):

Container(
    width: 200,
    height: 200,
    child: CustomPaint(
     painter: _CircleProgressPaint(.5),
    ),
   )

class _CircleProgressPaint extends CustomPainter {
 final double progress;

 _CircleProgressPaint(this.progress);

 Paint _paint = Paint()
  ..style = PaintingStyle.stroke
  ..strokeWidth = 20;

 @override
 void paint(Canvas canvas, Size size) {
  _paint.shader = ui.Gradient.sweep(
    Offset(size.width / 2, size.height / 2), [Colors.red, Colors.yellow]);
  canvas.drawArc(
    Rect.fromLTWH(0, 0, size.width, size.height), 0, pi*2, false, _paint);
 }

 @override
 bool shouldRepaint(CustomPainter oldDelegate) {
  return true;
 }
}

除了圖片,可以給任何組件加入漸變效果,比如文字:

ShaderMask(
 shaderCallback: (Rect bounds) {
  return LinearGradient(
   colors: <Color>[Colors.blue, Colors.red],
   tileMode: TileMode.mirror,
  ).createShader(bounds);
 },
 blendMode: BlendMode.srcATop,
 child: Center(
  child: Text(
   '老孟,一枚有態(tài)度的程序員',
   style: TextStyle(fontSize: 24),
  ),
 ),
)

到此這篇關(guān)于淺談Flutter 中漸變的高級用法(3種)的文章就介紹到這了,更多相關(guān)Flutter 漸變內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Android App中ViewPager使用PagerAdapter的方法

    詳解Android App中ViewPager使用PagerAdapter的方法

    這篇文章主要介紹了詳解Android App中ViewPager使用PagerAdapter的方法,同時附帶了一個ViewPager的PagerAdapter不能更新數(shù)據(jù)的問題解決方法,需要的朋友可以參考下
    2016-03-03
  • Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法

    Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法

    這篇文章主要介紹了Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法,用idegen來生成針對AndroidStudio或IntelliJ?IDEA的Android系統(tǒng)源代碼工程配置文件,需要的朋友可以參考下
    2022-08-08
  • Android Bluetooth藍(lán)牙技術(shù)初體驗

    Android Bluetooth藍(lán)牙技術(shù)初體驗

    這篇文章主要介紹了Android Bluetooth藍(lán)牙技術(shù)初體驗的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Android本地驗證碼的簡易實現(xiàn)方法(防止暴力登錄)

    Android本地驗證碼的簡易實現(xiàn)方法(防止暴力登錄)

    驗證馬真是無處不在啊,主要作用是防止惡意暴力破解登錄,這篇文章主要介紹了Android本地驗證碼的簡易實現(xiàn)方法(防止暴力登錄),需要的朋友可以參考下
    2017-04-04
  • Android Studio3.0.1填坑筆記

    Android Studio3.0.1填坑筆記

    IntelliJ IDEA 功能強(qiáng)大,是Jet Brains 公司開發(fā)商業(yè)IDE(集成開發(fā)環(huán)境),同時支持Java, Scala 和Groovy。下面小編給大家?guī)砹薃ndroid Studio3.0.1填坑筆記,需要的朋友一起看看吧
    2018-01-01
  • Recycleview實現(xiàn)無限自動輪播

    Recycleview實現(xiàn)無限自動輪播

    這篇文章主要為大家詳細(xì)介紹了Recycleview實現(xiàn)無限自動輪播,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android引用arr包的兩種方法

    Android引用arr包的兩種方法

    這篇文章介紹了android中引用arr包的兩種方法,jar包和arr包,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-11-11
  • Android中AlertDialog 點擊按鈕后不關(guān)閉對話框的功能

    Android中AlertDialog 點擊按鈕后不關(guān)閉對話框的功能

    本篇文章主要介紹了Android中AlertDialog 點擊按鈕后不關(guān)閉對話框的功能,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • eclipse導(dǎo)入appcompat項目報錯解決辦法

    eclipse導(dǎo)入appcompat項目報錯解決辦法

    這篇文章主要介紹了eclipse導(dǎo)入appcompat項目報錯解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android仿今日頭條多個fragment懶加載的實現(xiàn)

    Android仿今日頭條多個fragment懶加載的實現(xiàn)

    我們在做應(yīng)用開發(fā)的時候,一個Activity里面可能會以viewpager(或其他容器)與多個Fragment來組合使用,下面這篇文章主要給大家介紹了關(guān)于利用Android仿今日頭條多個fragment懶加載的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12

最新評論