首页 > 解决方案 > 如何将渐变滤镜应用于图标?

问题描述

我需要在我的Icon.

我如何实现这一目标?

标签: flutterdart

解决方案


一种方法是使用 ShaderMask 小部件。如果你用这个包裹一个图标,你可以应用你喜欢的任何渐变:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: LinearGradientMask(
            child: Icon(
              Icons.book,
              size: 250,
              color: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
}

class LinearGradientMask extends StatelessWidget {
  LinearGradientMask({this.child});
  final Widget child;

  @override
  Widget build(BuildContext context) {
    return ShaderMask(
      shaderCallback: (bounds) {
        return RadialGradient(
          center: Alignment.topLeft,
          radius: 1,
          colors: [Colors.blue, Colors.red],
          tileMode: TileMode.mirror,
        ).createShader(bounds);
      },
      child: child,
    );
  }
}

给你一些看起来像这样的东西:

在此处输入图像描述


推荐阅读