【Flutter】如何给按钮添加圆角 自定义圆角按钮样式

news2024/11/16 10:48:09

文章目录

    • 一、前言
    • 二、创建基本按钮
    • 三、如何在 Flutter 中创建圆角按钮
    • 四、自定义圆角按钮
      • 1.修改按钮颜色
      • 2.修改圆角半径
    • 五、完整代码示例
    • 六、总结

一、前言

欢迎来到 Flutter 的世界!在这篇文章中,我们将探索 Flutter 的一些基础知识。但是,你知道吗?这只是冰山一角。如果你想深入学习 Flutter,掌握更多的技巧和最佳实践,我有一个好消息要告诉你:我们有一个全面的 Flutter专栏->Flutter Developer 101 入门小册 等待着你。在那里,你将获得完整的、系统的 Flutter 学习资料,包括详细的代码示例和深入的概念解析。更重要的是,我们的专栏正在不断更新和完善,而价格也会随着内容的丰富而逐渐上调。所以,现在加入,你将以最优惠的价格获得所有的内容。现在,让我们开始今天的学习吧!

按钮在任何应用程序中都扮演着至关重要的角色,它们是用户与应用交互的主要方式。如果你看看现在流行的应用,会发现很多按钮都是圆角设计,这是因为圆角按钮的外观更加柔和,更具有美感,给用户带来更好的体验。

二、创建基本按钮

在我们开始创建圆角按钮之前,我们先来看一下如何在 Flutter 中创建一个最基础的按钮。我们后面创建圆角按钮时,会在这个基础上进行扩展。

在 Flutter 中,有很多类型的按钮,如 ElevatedButtonTextButtonOutlinedButton 等。它们都有各自的特性和用途。今天,我们就以 ElevatedButton 为例,来看一下如何创建一个简单的按钮。

创建一个 ElevatedButton 非常简单,只需要提供一个 onPressed 函数和一个子组件。onPressed 函数定义了当按钮被按下时,应该执行的操作。子组件通常是一个 Text 组件,用来显示在按钮上的文字。

以下是一个简单的 ElevatedButton 的示例:

ElevatedButton(
  onPressed: () {
    // 当按钮被按下时,执行的操作
    print('按钮被点击了!');
  },
  child: Text(
    '点击我', // 按钮上显示的文字
  ),
)

这段代码会创建一个带有文字 “点击我” 的按钮,当你点击这个按钮时,会在控制台打印出 “按钮被点击了!”。

三、如何在 Flutter 中创建圆角按钮

使用 Flutter 的 shape 属性,这个属性可以让我们定义按钮的形状,我们可以使用 RoundedRectangleBorder 类来为按钮添加圆角。

RoundedRectangleBorder 类需要一个 borderRadius 属性,这个属性可以让我们定义圆角的大小。borderRadius 属性接受一个 BorderRadius 对象,我们可以通过 BorderRadius.circular() 方法来设置圆角的半径。

现在,让我们看一下如何创建一个圆角按钮:

ElevatedButton(
  onPressed: () {
    // 当按钮被按下时,执行的操作
    print('圆角按钮被点击了!');
  },
  child: Text(
    '点击我', // 按钮上显示的文字
  ),
  style: ButtonStyle(
    shape: MaterialStateProperty.all(
      RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(20), // 圆角半径
      ),
    ),
  ),
)

这段代码会创建一个带有文字 “点击我” 的圆角按钮,当你点击这个按钮时,会在控制台打印出 “圆角按钮被点击了!”。你可以看到,我们通过 shape 属性和 RoundedRectangleBorder 类,给按钮添加了圆角。

四、自定义圆角按钮

在上一节中,我们已经成功地创建了一个圆角按钮。但是,我们通常会希望按钮的外观能够符合我们应用的主题,比如颜色、大小等等。幸运的是,Flutter 提供了很多自定义按钮的选项。

接下来,我们就来看一下如何修改按钮的颜色和圆角半径。

1.修改按钮颜色

修改按钮颜色是非常简单的。我们可以通过 ElevatedButtonstyle 属性来设置按钮的颜色。具体来说,我们需要使用 ButtonStyle 对象,并设置其 backgroundColor 属性。

让我们看一下如何将按钮颜色设置为红色:

ElevatedButton(
  onPressed: () {
    // 当按钮被按下时,执行的操作
    print('红色圆角按钮被点击了!');
  },
  child: Text(
    '点击我', // 按钮上显示的文字
  ),
  style: ButtonStyle(
    backgroundColor: MaterialStateProperty.all(Colors.red), // 按钮颜色
    shape: MaterialStateProperty.all(
      RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(20), // 圆角半径
      ),
    ),
  ),
)

现在,我们的按钮变成了红色。

2.修改圆角半径

修改圆角半径也非常简单。我们只需要在 RoundedRectangleBorderborderRadius 属性中,改变 BorderRadius.circular() 的参数即可。

让我们看一下如何将圆角半径改为 30:

ElevatedButton(
  onPressed: () {
    // 当按钮被按下时,执行的操作
    print('大圆角按钮被点击了!');
  },
  child: Text(
    '点击我', // 按钮上显示的文字
  ),
  style: ButtonStyle(
    backgroundColor: MaterialStateProperty.all(Colors.red), // 按钮颜色
    shape: MaterialStateProperty.all(
      RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(30), // 圆角半径
      ),
    ),
  ),
)

现在,我们的按钮的圆角半径变大了。

五、完整代码示例

下面是创建的红色圆角按钮的完整代码示例。你可以将它直接复制到 DartPad 中运行,看一下效果。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter 圆角按钮示例'),
        ),
        body: Center(
          child: Padding(
            padding: EdgeInsets.all(20),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                ElevatedButton(
                  onPressed: () {
                    // 当按钮被按下时,执行的操作
                    print('红色大圆角按钮被点击了!');
                  },
                  child: Text(
                    '点击我', // 按钮上显示的文字
                  ),
                  style: ButtonStyle(
                    backgroundColor: MaterialStateProperty.all(Colors.red), // 按钮颜色
                    shape: MaterialStateProperty.all(
                      RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(30), // 圆角半径
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用。应用的主体是一个 Scaffold,它包含一个标题为 “Flutter 圆角按钮示例” 的 AppBar,以及一个 Center 组件,其中包含我们的红色圆角按钮。

当你点击这个按钮时,会在控制台打印出 “红色大圆角按钮被点击了!”。

运行结果如下图所示。

六、总结

通过这篇文章,我们学习了如何在 Flutter 中创建和自定义圆角按钮。我们首先创建了一个基本的 ElevatedButton,然后学习了如何通过 shape 属性和 RoundedRectangleBorder 类来给按钮添加圆角。最后,我们探索了如何通过 ButtonStyle 对象来自定义按钮的颜色和圆角半径。

在 Flutter 中创建和自定义圆角按钮是一个相对简单但又非常重要的技能。通过使用圆角按钮,你可以为你的应用添加一个现代且舒适的触感,同时提高用户的体验。

此外,Flutter 提供了非常丰富的自定义选项,让我们可以根据需要调整按钮的各个属性。这不仅让我们能够创建出与众不同的按钮,还能让我们的应用更加符合自身的风格和主题。

你已经完成了这篇文章的学习,很棒!但是,Flutter 的世界还有更多等待你去探索。如果你对 Flutter 感兴趣,想要更深入地学习,那么我要推荐你一个很棒的资源:我们的 Flutter专栏->Flutter Developer 101 入门小册。在那里,你将获得完整的、系统的 Flutter 学习资料,包括详细的代码示例和深入的概念解析。比如,你知道如何使用 Flutter 构建一个完整的应用吗?在我们的专栏中,你将找到答案。更重要的是,我们的专栏正在不断更新和完善,而价格也会随着内容的丰富而逐渐上调。所以,现在加入,你将以最优惠的价格获得所有的内容。让我们一起在 Flutter 的世界中继续探索吧!如果你想了解更多,可以先阅读我们的 一站式解决你的需求,Flutter Developer 101 入门小册 专栏指引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【IC设计】Synopsys数字IC设计流程

文章目录 数字IC设计流程前端设计RTL编写和HDL仿真逻辑综合门级仿真形式化验证 后端设计数据准备set mw_phys_refs *set link_library *数据准备 (SDC)数据准备 (RC Techfile) set_tlu_plus_files floor planFloorplan阶段的主要内容&#xff1a;常用命令&#xff1a; placemen…

BiFPN,one-stage,two-stage

目录 BiFPN 语义信息 单stage物体检测算法 双stage skip connection,low-level feature,high level-feature,top-dowm path backbone通常分为几个stage BiFPN BiFPN是双向特征金字塔网络的缩写&#xff0c;是计算机视觉中用于目标检测和分割任务的一种神经网络架构。 …

碳排放预测模型 | Python实现基于传统Holt winter时间序列的碳排放预测模型(预测未来发展趋势)

文章目录 效果一览文章概述研究内容环境准备源码设计学习总结参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于传统Holt winter时间序列的碳排放预测模型(预测未来发展趋势) 研究内容 这是数据集的链接:https://github.com/owid/co2-data/blob/master/owid-co2-d…

一个好的接口自动化测试脚本是怎么写出来的?

目录 前言 1、某个用例的测试目的是什么 2、接口信息的来源 3、一些基本原则 4、断言那些事 5、脚本的后期维护 6、关于测试数据的准备 总结&#xff1a; 前言 谈到接口测试&#xff0c;大家关注更多的是哪个工具更优秀&#xff0c;更好用。但是很少人关注到接口测试用…

Allegor17.2版本WIN11系统CIS配置提示错误解决方案

错误提示&#xff1a; ERROR(ORCIS-6250): Unable to continue. Database access failed. Contact the database administrator to correct the following error(s), and then retry. ODBC Error Code: -1 Description: 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体…

架构-系统架构设计模块-2

软件架构风格 #mermaid-svg-daJWV8kQ9nIgH5tZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-daJWV8kQ9nIgH5tZ .error-icon{fill:#552222;}#mermaid-svg-daJWV8kQ9nIgH5tZ .error-text{fill:#552222;stroke:#55222…

2023年大学计算机专业实习心得14篇

2023年大学计算机专业实习心得精选篇1 20__年已然向我们挥手告别而去了。在20__年初之际&#xff0c;让我们对过去一年的工作做个总结。忙碌的一年里&#xff0c;在领导及各位同事的帮助下&#xff0c;我顺利的完成了20__年的工作。为了今后更好的工作&#xff0c;总结经验&…

【大数据学习篇13】在linux上安装jupyter

下面介绍在liunx怎么安装jupyter&#xff0c;一步到位介绍。 目录 下面介绍在liunx怎么安装jupyter&#xff0c;一步到位介绍。 1、安装Anaconda3​编辑 1.1 自己选择一个位置下载 1.3 配置anaconda的路径 1.3 查看anaconda的版本 2、配置Jupyter Notebook 3、运行Jupy…

Linux UPS配置详解 (山特SANTAK TGBOX-850 )

起因 配置了一台All in One主机&#xff0c;系统是装的PVE&#xff0c;一个linux的虚拟机。里面装了openwrt软路由&#xff0c;还有OMV这个NAS系统。为了防止数据丢失&#xff0c;最好是配置一台UPS来保护数据&#xff0c;毕竟数据无价。于是买了一台山特的TGBOX-850。由于山特…

【群智能算法改进】基于动态折射反向学习和自适应权重的改进麻雀搜索算法[4]【Matlab代码#39】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. SSA算法2. 改进SSA算法2.1 动态折射反向学习策略2.2 自适应权重策略 3. 部分代码展示4. 仿真结果展示5. 资源获取说明 【获取资源请见文章第5节&#xff1a;资源获取】 1. SSA算法 2. 改进SSA算法 2.1 动态折射反向…

局域网内不同网段的设备互相连接设置

目录 介绍1、打开网络连接&#xff0c;找到本地网络->属性->ipv4->属性->高级&#xff1a;2、在高级设置页面&#xff0c;我们添加一个IP&#xff0c;这个IP和板子在一个网段&#xff0c;我这里设置的是192.168.253.101&#xff1a;3、设置完成即可生效&#xff0c…

从0打1 用node express vite搭建一个博客系统系列(完结)

项目使用了Node后端、Express和Vite搭建的全栈博客系统系列&#xff0c;将Vue 2项目重构为Vue 3版本。该系统包含了以下主要模块和功能&#xff1a; 登录和注册功能&#xff1a;用户可以通过注册账号和登录来访问博客系统。 分类列表&#xff1a;展示不同分类的文章&#xff…

编译LeGo-LOAM,并且采用速腾聚创激光雷达与之相连

目录 一、LeGo-LOAM部署二、速腾聚创激光雷达调试三、将速腾聚创激光雷达连到LeGo-LOAM四、解决LeGo-LOAM不保存pcd地图的问题 一、LeGo-LOAM部署 参考链接&#xff1a;实车部署采用速腾聚创RS16激光雷达的LeGo-LOAM LeGO-LOAM初探&#xff1a;原理&#xff0c;安装和测试 1.g…

C语言基础--整型int,长整型long,浮点型double float

本文讲解常见的C语言变量,并举出一些实例 从微软的C语言文档把所有的C语言可定义(就是能用的)截图展示: 还有好几页,不放了,看着都头疼 但是,往往用的最多的,也就是下面的(本篇只讲整数和浮点数) int 整数 整数的定义不用说了吧QAQ int a = 10; //定义一个…

深度学习应用篇-计算机视觉-视频分类[8]:时间偏移模块(TSM)、TimeSformer无卷积视频分类方法、注意力机制

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

本周大新闻|Vision Pro头显重磅发布;苹果收购AR厂商Mira

本周XR大新闻&#xff0c;上周Quest 3发布之后&#xff0c;本周苹果MR头显Vision Pro正式发布&#xff0c;也是本周AR/VR新闻的重头戏。 ​AR方面&#xff0c;苹果发布VST头显Vision Pro&#xff08;虽然本质是台VR&#xff0c;但以AR场景为核心&#xff09;以及visionOS&…

Qt动态调用(外部调用)SDK库(dll动态库)

Qt动态调用SDK库&#xff08;dll动态库&#xff09; ​​​​​​​ 之前的文章&#xff0c;介绍了Qt调用sdk库的方式&#xff0c;大家可以点击查看&#xff08;Q调用SDK库(dll动态库)&#xff09;之前的文章&#xff0c;里面介绍的调用方式就是静态的调用方式。如下图所示&am…

NLP:BIG-bench基准任务的简介、安装、使用方法之详细攻略

NLP&#xff1a;BIG-bench基准任务的简介、安装、使用方法之详细攻略 目录 BIG-bench基准任务的简介 1、BIG-bench基准任务的概述 2、BBL BIG-bench基准任务的安装 BIG-bench基准任务的使用方法 1、使用SeqIO加载BIG-bench json任务的快速启动 BIG-bench基准任务的简介 …

Jmeter常用参数化技巧总结!

说起接口测试&#xff0c;相信大家在工作中用的最多的还是Jmeter。 JMeter是一个100&#xff05;的纯Java桌面应用&#xff0c;由Apache组织的开放源代码项目&#xff0c;它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA 等多种协议。 在做…

libVLC 调节图像(亮度、对比度、色调、饱和度、伽玛)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 对于一个视频来说,色彩和画面效果的呈现非常重要。假如你的画面偏暗或偏亮,缺乏层次感,色彩不够丰富或不自然,则需要根据场景和氛围进行调整。 所涉及的重要参数有: 亮度: 是视频画面的明暗程度。调整…