【问题标题】:How can I make a gradient shadow around any widget in flutter?如何在颤动的任何小部件周围制作渐变阴影?
【发布时间】:2021-09-28 10:46:23
【问题描述】:

例子:

请注意,小部件的颜色无关紧要,只有它周围的阴影颜色

我一直在尝试编辑 BoxShadow 的源代码,它只有 100 行长,但我没有太大的成功。

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: flutter flutter-layout flutter-design


    【解决方案1】:

    通过使用this,我实现了你想要的。

    import 'package:flutter/material.dart';
    
    import 'gradient_decoration.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      void initState() {
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: _buildBody(),
          floatingActionButton: FloatingActionButton(
            onPressed: () {},
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        );
      }
    
      Widget _buildBody() {
        return Center(
          child: Container(
            width: 300,
            height: 80,
            decoration: GradientShadowBoxDecoration(
                borderRadius: BorderRadius.circular(20),
                boxShadow: [
                  BoxShadow(
                    offset: Offset(0.0, 0.0),
                    blurRadius: 25,
                  ),
                ],
                gradient: LinearGradient(
                  begin: Alignment.centerLeft,
                  end: Alignment.centerRight,
                  colors: [
                    Colors.blue,
                    Colors.purple,
                  ],
                )),
            child: Center(
              child: Text(
                'Login',
                style: TextStyle(
                  fontSize: 25.0,
                  fontWeight: FontWeight.bold,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2011-03-27
      • 2020-01-15
      • 2020-07-12
      • 1970-01-01
      • 2012-11-03
      相关资源
      最近更新 更多