flutter-渐变色边框和渐变色文字和渐变色背景

article/2025/8/5 12:59:03

文章目录

  • 1. 介绍
  • 2. 代码实现
    • 2-1. 渐变色背景
    • 2-2. 渐变色边框
    • 2-3. 宽高由内容撑起的渐变色边框
    • 2-4. 渐变色文本
  • 3. 完整例子

1. 介绍

在 flutter 中,渐变有三种,线性渐变 LinearGradient、放射状渐变 RadialGradient、扇形渐变 SweepGradient。一般都是使用线性渐变 LinearGradient,下面是本文带你实现的几个渐变色效果:

2. 代码实现

LinearGradient 类接受三个参数:

  • begin:渐变的起始点,例如 Alignment.centerLeft 表示从左侧开始渐变
  • end:渐变的结束点,例如 Alignment.centerRight 表示渐变到右侧结束
  • colors:渐变过程中的颜色数组

2-1. 渐变色背景

Container(height: 200,alignment: Alignment.center,margin: const EdgeInsets.symmetric(vertical: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),gradient: const LinearGradient(begin: Alignment.topLeft,end: Alignment.bottomRight,colors: colorList)),child: const Text('渐变色背景',style:TextStyle(color: Colors.white, fontSize: 16)))

渐变色背景

2-2. 渐变色边框

需要先安装gradient_borders库。

flutter pub add gradient_borders
import 'package:gradient_borders/box_borders/gradient_box_border.dart';Container(height: 200,alignment: Alignment.center,margin: const EdgeInsets.only(bottom: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),border: const GradientBoxBorder(gradient: LinearGradient(colors: colorList),width: 2)),child: const Text('渐变色边框',style:TextStyle(color: Colors.white, fontSize: 16)))

渐变色边框

2-3. 宽高由内容撑起的渐变色边框

Container(padding: const EdgeInsets.all(10),margin: const EdgeInsets.only(bottom: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),border: const GradientBoxBorder(gradient: LinearGradient(colors: colorList),width: 2)),child: const Text('宽高不固定由内容撑起来的渐变色边框',style:TextStyle(color: Colors.white, fontSize: 16)))

宽高由内容撑起的渐变色边框

2-4. 渐变色文本

Container(height: 50,alignment: Alignment.center,child: ShaderMask(shaderCallback: (rect) {return const LinearGradient(begin: Alignment.topLeft,end: Alignment.bottomRight,colors: colorList,).createShader(rect);},child: const Text('渐变色文字',style: TextStyle(color: Colors.white, fontSize: 16))))

渐变色文字

3. 完整例子

import 'package:flutter/material.dart';
import 'package:gradient_borders/box_borders/gradient_box_border.dart';/// 渐变色背景和边框和文字
class GradientColorPage extends StatelessWidget {const GradientColorPage({super.key});Widget build(BuildContext context) {const List<Color> colorList = [Colors.red, Colors.yellow, Colors.blue];return Scaffold(backgroundColor: Colors.black,body: SafeArea(child: Container(alignment: Alignment.center,width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,padding: const EdgeInsets.all(20),child: Column(mainAxisSize: MainAxisSize.max,children: [/// 渐变色背景Container(height: 200,alignment: Alignment.center,margin: const EdgeInsets.symmetric(vertical: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),gradient: const LinearGradient(begin: Alignment.topLeft,end: Alignment.bottomRight,colors: colorList)),child: const Text('渐变色背景',style:TextStyle(color: Colors.white, fontSize: 16))),/// 渐变色边框Container(height: 200,alignment: Alignment.center,margin: const EdgeInsets.only(bottom: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),border: const GradientBoxBorder(gradient: LinearGradient(colors: colorList),width: 2)),child: const Text('渐变色边框',style:TextStyle(color: Colors.white, fontSize: 16))),/// 宽高不固定由内容撑起来的渐变色边框Container(padding: const EdgeInsets.all(10),margin: const EdgeInsets.only(bottom: 30),decoration: BoxDecoration(borderRadius: BorderRadius.circular(12),border: const GradientBoxBorder(gradient: LinearGradient(colors: colorList),width: 2)),child: const Text('宽高不固定由内容撑起来的渐变色边框',style:TextStyle(color: Colors.white, fontSize: 16))),/// 渐变色文字Container(height: 50,alignment: Alignment.center,child: ShaderMask(shaderCallback: (rect) {return const LinearGradient(begin: Alignment.topLeft,end: Alignment.bottomRight,colors: colorList,).createShader(rect);},child: const Text('渐变色文字',style: TextStyle(color: Colors.white, fontSize: 16))))],))));}
}

往期文章

  • flutter学习-day1-环境搭建和启动第一个项目
  • flutter学习-day12-可滚动组件和监听
  • Vue2全家桶+Element搭建的PC端在线音乐网站
  • vue3+element-plus配置cdn
  • 助你上手Vue3全家桶之Vue3教程
  • 助你上手Vue3全家桶之VueX4教程
  • 助你上手Vue3全家桶之Vue-Router4教程
  • 超详细!Vue的九种通信方式
  • 超详细!Vuex手把手教程
  • 使用nvm管理node.js版本以及更换npm淘宝镜像源
  • vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令
  • 超详细!Vue-Router手把手教程

个人主页

  • CSDN
  • GitHub
  • 简书
  • 博客园
  • 掘金

http://www.hkcw.cn/article/jXbXdxHgTx.shtml

相关文章

记录一次macbook 安装macOS+win11双系统的历程。包括MacBook电脑恢复、绕过win11限制等

一、MacBook恢复macOS系统&#xff0c;或有问题可以重新用此操作 关机状态&#xff0c;同时摁住 optioncommandR 三个键&#xff0c;然后再摁开机键&#xff0c;等出现 一个地球的图标即可松开。 然后正常链接wifi&#xff0c;让它自动下载一些组件即可。 这里对硬盘进行重新…

移动电视盒MGV2000刷安卓及Armbian笔记

我的是mgv2000 JL代工的&#xff0c;配置是四核1G内存8GEMMC&#xff0c;我的目的是把他刷成linux&#xff0c;网上查询资料后&#xff0c;了解到大概分以下两个步骤&#xff1a; #一、先把原来移动自带的系统刷新为适合的安卓系统 #二、在新的安卓系统下&#xff0c;再刷成A…

蚂蚁百宝箱3分钟上手MCP:6步轻松构建智能体应用并发布小程序

蚂蚁百宝箱3分钟上手MCP&#xff1a;6步轻松构建智能体应用并发布小程序 AI 能聊天、能画画&#xff0c;但它能帮你赚钱吗&#xff1f;智能体空有一身本领却难以变现&#xff0c;是不是让你也感到无奈&#xff1f; 别担心&#xff0c;蚂蚁百宝箱「MCP专区」来啦&#xff01;现…

Android Studio 使用WIFI连接手机进行无线调试 adb命令

1.将电脑和手机连接到同一WIFI 2.手机连接usb&#xff0c;连接到AndroidStudio&#xff0c;和平时连线调试一样。 3.打开AndroidStudio下方Terminal便可以开始输入adb命令。 4.输入 adb devices 命令查看设备 adb devices效果如下 5.设置设备端口号命令 adb tcpip 5555 端…

MySQL—使用binlog日志恢复数据

一、binlog日志恢复数据简介 在 MySQL 中&#xff0c;使用二进制日志&#xff08;binlog&#xff09;恢复数据是一种常见的用于故障恢复或数据找回的方法。以下是详细的使用步骤&#xff1a; 确认 binlog 已启用&#xff1a;首先需要确认 MySQL 服务器已经启用了二进制日志功…

Kotlin-类和对象

文章目录 类主构造函数次要构造函数总结 对象初始化 类的继承成员函数属性覆盖(重写)智能转换 类的扩展 类 class Student { }这是一个类,表示学生,怎么才能给这个类添加一些属性(姓名,年龄…)呢? 主构造函数 我们需要指定类的构造函数。构造函数也是函数的一种,但是它专门…

OpenWrt 配置 IOS 、 Android USB共享网络

前言 由于快过年了老家的宽带早已到期, 手机卡流量还有100G, 于是想到使用手机USB网络共享给openwrt来上网。 设备准备 准备手机( IOS / Android / USB随身Wi-Fi ) 带USB插口的openwrt路由器 openwrt配置 安装 kmod-usb-net-rndis、kmod-usb-storage 依赖包: 打开openwrt…

手把手教你在VSCode里开启中文模式(新手必看避坑指南)

文章目录 一、核心操作三步走&#xff08;有手就会&#xff09;1. 插件商店精准搜索2. 闪电安装法3. 终极验证 二、常见翻车现场急救指南场景1&#xff1a;插件装了但没反应场景2&#xff1a;菜单汉化不全场景3&#xff1a;终端/调试界面英文 三、高阶玩家必备骚操作1. 多语言自…

8个2025年必备的IntelliJ IDEA免费插件

IntelliJ IDEA 必备免费插件&#xff0c;全面提升 Java 开发效率与代码质量 微信搜索关注《Java学研大本营》 在 Java 开发中&#xff0c;IntelliJ IDEA 已然是一款强大的集成开发环境。但如果能搭配上合适的插件&#xff0c;能让开发体验提升到全新的高度。 今天给大家分享一…

Mac电脑(M芯片)安装ubuntu22.04

一、下载VMware虚拟机 VMware官网下载VMware Fusion 二、下载ubuntu镜像 M系列的Mac电脑要下载arm架构的镜像 方法一&#xff1a;官网下载 方法二&#xff1a;清华源下载 清华源镜像 点击获取下载链接 选择Ubuntu&#xff0c;下载22.04.5(arm64,Server) 三、创建虚拟机 …

Docker Desktop配置国内镜像源教程

在使用 Docker 时&#xff0c;由于默认镜像源在国外&#xff0c;经常会遇到下载速度慢、连接超时等问题。本文将详细介绍如何在 Windows 系统中为 Docker 配置国内镜像源&#xff0c;以提升镜像拉取速度。 常用国内镜像源 https://docker.1ms.run清华镜像源 https://docker.m…

Python详细安装教程——Python及PyCharm超详细安装教程:新手小白也能轻松搞定!(最新版)

Python作为一门简单易学、功能强大的编程语言&#xff0c;近年来在数据分析、人工智能、Web开发等领域广受欢迎。而PyCharm作为一款专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了强大的代码编辑、调试和项目管理功能&#xff0c;是Python开发者的得力…

2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建)

1.摘要 本文介绍了2024年最新版IntelliJ IDEA的下载和安装过程&#xff0c;包括IntelliJ IDEA介绍、Java和JDK的介绍、如何选择社区版和商业版、Java环境的搭建、讲解了JDK的下载安装及配置。同时&#xff0c;文章还简要概述了Java语言的特点和适用场景&#xff0c;是Java初学…

Windows docker下载minio出现“Using default tag: latestError response from daemon”

Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况&#xff0c;一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…

JetBrains 开发工具弹窗 We could not validate your license 包括但不限于IDEA/CLion/GoLand/PyCharm

JetBrains 开发工具弹窗 We could not validate your license 包括但不限于IDEA/CLion/GoLand/PyCharm 关于 JetBrains 开发工具近期更新后&#xff0c;始终弹窗 We could not validate your license的问题处理 其实问题很简单&#xff0c;弹窗的用户其实是因为地区中选择了中国…

Python深度学习环境配置(Pytorch、CUDA、cuDNN),包括Anaconda搭配Pycharm的环境搭建以及基础使用教程(保姆级教程,适合小白、深度学习零基础入门)

全流程导览 一、前言二、基本介绍2.1全过程软件基本介绍2.1.1 Pytorch2.1.2 Anaconda2.1.3 Pycharm2.1.4 显卡GPU及其相关概念2.1.5 CUDA和cuDNN 2.2 各部分相互间的联系和安装逻辑关系 三、Anaconda安装3.1安装Anaconda3.2配置环境变量3.3检验是否安装成功 四、Pycharm安装五、…

从0开始的github学生认证并使用copilot教程(超详细!)

目录 一.注册github账号 1.1、仅仅是注册 1.2、完善你的profile 二、Github 学生认证 邮箱 学校名称 How do you plan to use Github? Upload Proof 学校具体信息 一.注册github账号 1.1、仅仅是注册 1.用如QQ邮箱的第三方邮箱注册github 再添加.edu结尾的教育邮箱&…

黑马Java面试笔记之MySQL篇(优化)

一. 慢查询 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 出现慢查询的情况有以下几种&#xff1a; 聚合查询多表查询表数据量过大查询深度分页查询 表象&#xff1a;页面加载过慢&#xff0c;接口压测响应时间过长&#xff08;超过1s&#xff09; 1.2 如何定位慢查询&…

批量导出CAD属性块信息生成到excel——CAD C#二次开发(插件实现)

本插件可实现批量导出文件夹内大量dwg文件的指定块名的属性信息到excel&#xff0c;效果如下&#xff1a; 插件界面&#xff1a; dll插件如下&#xff1a; 使用方法&#xff1a; 1、获取此dll插件。 2、cad命令行输入netload &#xff0c;加载此dll&#xff08;要求AutoCAD&…

Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统

【提问1】 Chrome调用本地 everything.exe, everything 好像有本地 FTP 服务器&#xff1f; 【DeepSeek R1 回答】 是的&#xff0c;Everything 确实内置了 HTTP/FTP 服务器功能&#xff0c;这提供了一种相对安全的浏览器与本地应用交互的方式。以下是完整的实现方案&#x…