Flutter   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Flutter 中渐变的高级用法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Flutter 中渐变的高级用法

Flutter 中渐变有三种:

  • LinearGradient:线性渐变
  • RadialGradient:放射状渐变
  • SweepGradient:扇形渐变

看下原图,下面的渐变都是在此图基础上完成。

Flutter 中渐变的高级用法

LinearGradient

给一张图片添加从上到下的线性渐变:

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

Flutter 中渐变的高级用法

beginend 表示渐变的方向,上面设置的方向是从顶部中间到底部中间。

color 表示渐变的颜色。

设置各个渐变色的结束点:

Color color = Colors.orange;
return ShaderMask(
  shaderCallBACk: (Rect bounds) {
    return LinearGradient(
        begin: Alignment.topCenter,colors: [color,color,Colors.transparent,color],stops: [0,.4,.41,.6,.61,1]
    ).createShader(bounds);
  },);

stops 的个数要对应 color

Flutter 中渐变的高级用法

由于中间设置的渐变色为透明,所以中间是原图。

RadialGradient

RadialGradient 是放射状渐变。

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

Flutter 中渐变的高级用法

实现中间显示圆形原图,其他地方有灰色蒙板:

ShaderMask(
  shaderCallBACk: (Rect bounds) {
    return RadialGradient(
      radius: .6,colors: <Color>[
        Colors.transparent,Colors.grey.withOpacity(.7),Colors.grey.withOpacity(.7)
      ],.5,1],blendMode: BlendMode.srcATop,)

Flutter 中渐变的高级用法

SweepGradient

SweepGradient 扇形渐变效果

ShaderMask(
  shaderCallBACk: (Rect bounds) {
    return SweepGradient(
      colors: <Color>[
        Colors.red,Colors.blue
      ],)

Flutter 中渐变的高级用法

startAngleendAngle 表示开始和结束角度。

绘制渐变圆环:

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,size.width,size.height),pi*2,false,_paint);
  }

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

Flutter 中渐变的高级用法

除了图片,可以给任何组件加入渐变效果,比如文字

ShaderMask(
  shaderCallBACk: (Rect bounds) {
    return LinearGradient(
      colors: <Color>[Colors.blue,Colors.red],tileMode: TileMode.mirror,child: Center(
    child: Text(
      '老孟,一枚有态度的程序员',style: TextStyle(fontSize: 24),)

Flutter 中渐变的高级用法

交流

老孟Flutter博客地址(330个控件用法):http://laomengit.com

欢迎加入Flutter交流群(微信:laomENGIt)、关注公众号【老孟Flutter】:

Flutter 中渐变的高级用法

Flutter 中渐变的高级用法

大佬总结

以上是大佬教程为你收集整理的Flutter 中渐变的高级用法全部内容,希望文章能够帮你解决Flutter 中渐变的高级用法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: