如何在Flutter中使用BoxDecoration和GradientAppBar创建渐变效果

简介: 如何在Flutter中使用BoxDecoration和GradientAppBar创建渐变效果

本文介绍了如何在Flutter应用程序中使用LinearGradient创建线性渐变效果,包括基本用法、颜色控制和应用到AppBar的GradientAppBar包。通过实例展示了如何增强视觉吸引力和自定义颜色过渡。

简介

颜色渐变需要一个起始颜色和位置以及结束颜色和位置,然后执行颜色之间的过渡。考虑到颜色理论,它们可以使应用程序比普通设计更具视觉吸引力。

在本文中,您将使用 BoxDecorationLinearGradientgradient_app_bar 包将渐变应用到 Flutter 应用程序中。

先决条件

要完成本教程,您需要:

  • 下载并安装 Flutter。
  • 下载并安装 Android Studio Visual Studio Code。
  • 建议为您的代码编辑器安装插件:
  • 为 Android Studio 安装 FlutterDart 插件。
  • 为 Visual Studio Code 安装 Flutter 扩展。

本教程已使用 Flutter v1.22.2、Android SDK v30.0.2 和 Android Studio v4.1 进行验证。

第 1 步 — 设置项目

一旦您为 Flutter 设置好环境,您可以运行以下命令来创建一个新应用程序:

flutter create flutter_gradient_example

进入新项目目录:

cd flutter_gradient_example

使用 flutter create 将生成一个演示应用程序,该应用程序将显示按钮被点击的次数。

第 2 步 — 使用 LinearGradient

使用您的代码编辑器打开 main.dart 并修改代码以添加 BoxDecoration

import 'package:flutter/material.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(),
    );
  }
}
class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Gradient Example'),
      ),
      body: Center(
        child: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topRight,
              end: Alignment.bottomLeft,
              colors: [
                Colors.blue,
                Colors.red,
              ],
            )
          ),
          child: Center(
            child: Text(
              'Hello Gradient!',
              style: TextStyle(
                fontSize: 48.0,
                fontWeight: FontWeight.bold,
                color: Colors.white,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

关键在于向 Container 小部件添加 decorationBoxDecoration。这允许您定义一个 LinearGradient,它可以被赋予 colors,以及 beginend Alignment

编译您的代码并在模拟器中运行:

!在模拟器中运行的 Flutter 应用程序的屏幕截图,其中线性渐变从屏幕顶部开始为蓝色,并逐渐过渡到屏幕底部的红色。

这将创建一个线性渐变,从屏幕顶部开始为蓝色,并逐渐过渡到屏幕底部的红色。

第 3 步 — 使用 LinearGradientstops

还可以使用额外的颜色,并对颜色过渡应该在屏幕上的哪个位置进行更精细的控制。

在您的代码编辑器中重新打开 main.dart 并添加 stops

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Gradient Example'),
      ),
      body: Center(
        child: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topRight,
              end: Alignment.bottomLeft,
              stops: [
                0.1,
                0.4,
                0.6,
                0.9,
              ],
              colors: [
                Colors.yellow,
                Colors.red,
                Colors.indigo,
                Colors.teal,
              ],
            )
          ),
          child: Center(
            child: Text(
              'Hello Gradient!',
              style: TextStyle(
                fontSize: 48.0,
                fontWeight: FontWeight.bold,
                color: Colors.white,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

编译您的代码并在模拟器中运行:

!在模拟器中运行的 Flutter 应用程序的屏幕截图,其中线性渐变从屏幕右上角开始为黄色,并逐渐过渡到红色、靛蓝,最后在屏幕左下角过渡到蓝绿色。

这将创建一个线性渐变,从屏幕右上角开始为黄色,然后在屏幕上 0.4 处过渡到红色,然后在屏幕上 0.6 处过渡到靛蓝,最后在屏幕上 1.0 处过渡到蓝绿色。

第四步 — 使用 GradientAppBar

BoxDecoration 不适用于 AppBar。但是,可以使用 GradientAppBar 包将颜色渐变应用到 AppBar

在代码编辑器中打开 pubspec.yaml 并添加 gradient_app_bar

dependencies:
  flutter:
    sdk: flutter
  gradient_app_bar: ^0.1.3

然后,回到 main.dart 并添加 gradient_app_bar 的导入:

import 'package:flutter/material.dart';
import 'package:gradient_app_bar/gradient_app_bar.dart';

最后,您可以用 GradientAppBar 和后续颜色替换 AppBar

appBar: GradientAppBar(
  title: Text('Flutter Gradient Example'),
  gradient: LinearGradient(
    colors: [
      Colors.cyan,
      Colors.indigo,
    ],
  ),
),

此示例将使用青色和靛蓝色的 LinearGradient

编译您的代码并在模拟器中运行:

!在模拟器中运行的 Flutter 应用程序的屏幕截图,显示了从屏幕左侧开始的线性渐变,从青色逐渐过渡到靛蓝色。

这将创建一个线性渐变,从屏幕左侧开始为青色,逐渐过渡到屏幕右侧的靛蓝色。

结论

在本文中,您使用了 LinearGradientGradientAppBar 来将渐变应用到 Flutter 应用程序中。


目录
相关文章
|
缓存 Linux Android开发
Flutter音乐播放audioplayers
Flutter音乐播放audioplayers
|
Dart Android开发 iOS开发
比较 Flutter 日期选择器库【Flutter 专题 6】
日期选择器是对 UI 的有用补充,它使您的应用程序用户可以轻松地从日历中选择日期。无论您是在注册表单中添加出生日期字段,还是为用户提供预约时间段,您都可以使用日期选择器库来简化流程。 在本教程中,我们将探索 Flutter 的三个流行日期选择器库 Flutter、Flutter Datetime Picker、Flutter Date Range Picker 和date_time_picker。我们将检查每个库的功能并将每个库安装在一个简单的移动应用程序中。
1498 0
比较 Flutter 日期选择器库【Flutter 专题 6】
Flutter Getx 路由 until 方法帮助你跳转指定路由
不少同学都会问我,这样一个场景,当我点击商品列表,进入商品页,点击购买,支付成功后,想返回商品页,或者我的中心的订单列表。怎么做,这中间跨度了 n 个路由。 我不只一次的推荐 GetX 的 until 方法,和 offNamedUntil 方法。 我写了个 demo 今天我们就一起来看下这两个方法如何使用。
2435 0
Flutter Getx 路由 until 方法帮助你跳转指定路由
|
应用服务中间件 Go Android开发
通过外部链接启动 Flutter App(详细介绍及示例)
本文介绍了通过外部链接启动 Flutter App 的两种方式:`firebase_dynamic_links` 和 `app_links`。前者由 Firebase 提供,支持生成分享链接并自动处理未安装应用时的跳转(如跳转到应用商店),但已于2025年8月停止服务;后者则需开发者自行处理未安装应用时的重定向逻辑。文中详细说明了两者的配置步骤、代码实现及注意事项,推荐使用 `app_links` 进行新项目开发。
789 2
|
iOS开发 索引
flutter中好用的Widget-CupertinoPicker
flutter中好用的Widget-CupertinoPicker
968 0
|
存储 缓存 JavaScript
Flutter笔记:关于WebView插件的用法(上)
Flutter笔记:关于WebView插件的用法(上)
4657 5
|
前端开发 API Android开发
Flutter最强大的图表库fl_chart的使用
Flutter最强大的图表库fl_chart的使用
1895 1
|
Dart 前端开发 API
【Flutter前端技术开发专栏】Flutter中的异步编程与Future/async/await
【4月更文挑战第30天】本文探讨了Flutter中的异步编程,强调其在提高应用响应性和性能上的重要性。Flutter使用`Future`对象表示异步操作的结果,通过`.then()`和`.catchError()`处理异步任务。此外,Dart的`async/await`关键字简化了异步代码,使其更易读。理解并运用这些概念对于开发高效的Flutter应用至关重要。
287 0
【Flutter前端技术开发专栏】Flutter中的异步编程与Future/async/await
Flutter弹窗链-顺序弹出对话框
Flutter弹窗链-顺序弹出对话框
278 0
|
开发者 索引 容器
Flutter开发笔记:Flutter 布局相关组件
Flutter开发笔记:Flutter 布局相关组件
967 0

热门文章

最新文章

下一篇
开通oss服务