如何将渐变过滤器应用于图标?

Mat*_*s99 3 dart flutter

我需要在我的Icon.

我如何实现这一目标?

Mat*_* S. 10

一种方法是使用 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,
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

给你类似的东西:

在此处输入图片说明