第四百一十六回

news2024/9/24 7:22:38

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 实现方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"自定义标题栏"相关的内容,本章回中将介绍自定义Action菜单.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在这里提到的Action菜单是指AppBar中actions属性对应的组件。它和上一章回中介绍的标题栏类似,都位于页面上方,它们都受AppBar组件的控制。一个完整
的AppBar包含导航(返回箭头),标题和Actcons.他们从左到右依次排列。这三个内容中导航是自动生成的,比如从A页面导航到B页面时会 在页面B上显示一个导航图标,
也就是我们常见的返回箭头。标题是页面必备的内容,主要用来显示当前页面的主题。Actions是可以的内容,它通常用来在AppBar中添加一些附加功能,比如分享或者
下载。本章回中将介绍如何自定义Action菜单,进而打造出功能丰富的AppBar。

2. 思路与方法

2.1 实现思路

我们自定义Action菜单并不是重写相关的组件,而是使用把多个组件组合在一起的形成新的Actions。组合的内容依据自己的需求来制定,这点和上一章回中自定义标题
栏的思路相同。比如,我们对Actions的需求是:显示文本,点击文本后需要弹出功能菜单。有了这个需求后,我们就可以自定义Actions,文本通过TextButton组件
实现,它既可以显示文本内容,又可以响应点击事件。弹出功能菜单通过showMenu和PopupMenu一起实现。

2.2 实现方法

  • 创建TextButton组件,并且把它赋值给AppBar的Actions属性;
  • 创建popMenu,并且通过showMenu来显示,menu的内容可以自定义;
  • 把showMenu赋值给TextButton的onPress属性,用来响应按钮的点击事件;
  • 把TextButton组件赋值给Actions属性,它会显示在AppBar的最右侧;
    我们在上面步骤中使用了pupMenu功能,这里只是概要描述,具体的细节可以参考五十一回介绍相关内容.上面步骤中只是文本描述,内容比较抽象,不容易理解,我们将
    在接下来的小节中通过具体的示例代码来演示。

3. 示例代码

appBar: AppBar(
  title: Widget(), ///标题栏的内容省略,或者使用上一章回中的示例代码
  ///Action的优先级大于Title,它会占用Title的空间,如果它的空间过大时会把Title覆盖掉
  ///比如把action3-5打开后就会覆盖Title的内容.
  actions: [
    SizedBox(
      width: 80,
        child: TextButton(
          onPressed: (){
            showMenu(
              context:context,
              ///这个坐标值不好调整,下面我的经验值,位置在手指点击点的左下方,想往左移动给110+数字 往下移动180加数字
              position: const RelativeRect.fromLTRB(170, 180, 110, 10),
              items: [
                ///建议指定value属性
                PopupMenuItem<String>(
                  value: 'one',
                  onTap: ()=> debugPrint('tap one'),
                  child: const Text('1'),
                ),
                PopupMenuItem<String>(
                  value:'two',
                  onTap: ()=> debugPrint('tap two'),
                  child: const Text('2'),
                ),
                PopupMenuItem<String>(
                  value:'three',
                  onTap: ()=> debugPrint('tap three'),
                  child: const Text('3'),
                ),
              ],);
          },
          child: const Text("action1")),
    ),
    const SizedBox(
      width: 80,
      child: Text("action2"),
    ),
    // const SizedBox(
    //   width: 80,
    //   child: Text("action3"),
    // ),
    // const SizedBox(
    //   width: 80,
    //   child: Text("action4"),
    // ),
    // const SizedBox(
    //   width: 60,
    //   child: Text("action5"),
    // ),
  ],
),

上面的示例代码完全按照实现方法中的步骤来实现,代码中popMenu包含了三个选项,没有具体的功能,只是简单地打印一行日志。菜单的内容大家可以依据自身需求来决
定。代码中还省略了Scaffold以及其它的代码,只保留了AppBar相关的代码。编译并且运行上面的程序可以看到一个标题栏,标题左边是返回箭头,然后就标题和我们
自定义的Actions菜单。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。
此外,我们再补充一些Action的内容,Action可以包含多个组件,类似Row组件,也就是说可以在AppBar中的显示多个Action,我们在代码中尝试显示五个Action,
结果发现Action会占用Title的空间,如果它的空间过大时会把Title覆盖掉。因此我们推断:Action的优先级比标题(Title)高,它会的宽度过大时会覆盖标题。

4. 内容总结

我们在本章回中演示了如何自定义Acton菜单,并且通过一个需求:显示文本,点击文本后需要弹出功能菜单,介绍了自定义Action的思路和方法。大家可以结合自己在
项目中的需求来自定义Action,自定义的思路就是依据需求组合现有的组件形成新的组件。总之,只要是组件就可以,因为AppBar的actions属性是Widget类型,我
们只需要把自定义的Action值给该属性就可以实现自定义Acttion菜单的功能。
看官们,与"自定义Action菜单"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

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

相关文章

走进jvm之垃圾回收器篇

这里我想首先说明一下&#xff0c;虽然我们经常会拿垃圾回收器来做比较&#xff0c;虽然想挑选一个最好的收集器出来&#xff0c;但是目前也没有说哪一款收集器是完美的&#xff0c;更不存在万能的收集器&#xff0c;我们也只是对收集器选择最适合场景的一个收集器。 那么作者将…

WP免费主题2个分享给需要的人

免费wordpress主题 粉色高端大气的免费wordpress主题&#xff0c;用免费的主题也可以搭建wordpress网站。 https://www.wpniu.com/themes/12.html 免费WP模板 绿色清爽的wordpress建站模板&#xff0c;用免费的WP模板也可以搭建出精美网站。 https://www.wpniu.com/themes/…

必学干货!使用Python正则表达式匹配多个字符

1.匹配多个字符 今天我们来聊一聊正则表达式中一个很强大的功能&#xff1a;匹配多个字符&#xff01;正则表达式是一个非常强大的工具&#xff0c;可以帮助我们轻松地处理和匹配字符串。通过使用不同的符号和技巧&#xff0c;我们可以匹配多个字符&#xff0c;从而更加灵活地…

【网页实战项目设计】基于SSM的医院预约挂号系统

基于SSM的医院预约挂号系统 项目截图 开发环境与技术框架 开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&a…

计算机三级——网络技术(综合题第三题)

DHCP报文分析常用命令及英文单词的含义 Source&#xff1a;源地址(缩写&#xff1a;Src)Destitation&#xff1a;目的地址(缩写&#xff1a;Dst)ipconfig/all&#xff1a;查看客户机获得的IP地址及其他配置情况ipconfig/release&#xff1a;释放获得的地址&#xff08;源地址 …

Linux系统——nload命令

目录 引言 一、nload安装 二、nload命令详解 1.命令使用 2.命令详解 3.命令选项 3.1-u选项 nload -u h 自动变更单位&#xff0c;Bit/s nload -u H 自动变更单位&#xff0c;Byte/s 3.2-m选项 nload -m 不显示流量图 nload -m -H ens33 不显示流量图&#xff0c;以By…

基于浏览器localStorage作为数据库完成todolsit项目

一、文章内容 TodoList结构搭建HTML代码 TodoList样式编写Css代码 TodoList行为表现JavaScript代码 二、项目展示 项目介绍 Todolist是一个基于B/S模式开发的待办事项软件&#xff0c;主要功能是离线记录用户的待办事项和已经完成的事情&#xff0c;基于htmlcssjs实现&am…

TSINGSEE青犀AI智能分析网关V4酿酒厂安全挂网AI检测算法

在酿酒行业中&#xff0c;安全生产一直是企业经营中至关重要的一环。为了确保酒厂生产过程中的安全&#xff0c;TSINGSEE青犀AI智能分析网关V4的安全挂网AI检测算法发挥了重要作用。 TSINGSEE青犀AI智能分析网关V4的安全挂网检测算法是针对酒厂里酒窖挂网行为进行智能检测与识…

Linux第82步_“gpio子系统”下的使用KEY开关灯

使用新字符设备驱动的一般模板和“gpio子系统”&#xff0c;以及设备树&#xff0c;驱动KEY和LED。 1、在stm32mp157d-atk.dts文件中添加“gpio_led”和“key0”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&…

设置客户端桌面壁纸 文件夹重定向

域策略-设置客户端桌面壁纸 1/服务器管理器组策略管理-gwy.com-Defait Domain Policy-右击编辑 2/用户配置-首选项-置windows设置-文件夹-右击文件夹-创建-C:\bgp-应用 3/在客户端策略更新-gpupdate /force 命令符-查看是否正确 4/服务器创建c:\image\R-C.jpg&#xff0c;共享文…

G - Find a way

题目分析 1.双重bfs,遍历两个起点求最短路再计算总和即可 2.唯一的坑点在于对于一个KFC&#xff0c;两人中可能有一个到不了&#xff0c;所以还要对到不了的点距离做处理 #include <bits/stdc.h> using namespace std; using ll long long; const int N 220;struct pos…

[python]bar_chart_race绘制动态条形图

最近在 B 站上看到了一个宝藏 up 主&#xff0c;名叫 "Jannchie见齐"&#xff0c;专门做动态条形图相关的数据可视化。 可以看到做出的效果还是很不错的&#xff0c;但工具使用的是 JS&#xff0c;不是 Python&#xff0c;于是尝试搜索了一下&#xff0c;看看 Python…

读取pdf文件转为txt文件,使用正则表达式删除页码

通过下述链接中的代码python 读取pdf中的文本&#xff0c;读取pdf的文字到txt文本中。 txt文本中&#xff0c;包含pdf的页码信息&#xff0c;使用如下代码删除pdf的页码 下述是包含页码信息的一段文本&#xff0c;在其中给出了4中不同格式的页码信息。 text ""&qu…

机器视觉学习(四)—— 图像的色彩

目录 一、图像的基础知识 二、NumPy模块 三、图像色彩变化 3.1 RGB图像的分通道显示 3.2 HSV图像的分通道显示 一、图像的基础知识 总结的笔记&#xff1a; """ 二值图: 每个像素取值 0或1,图像显示出来只有黑白色; 黑色:0 白色:1 灰度图: …

CSDN学习笔记总索引(2024)——我的创作纪念日(1024)

从2021-05-21至2024-03-21&#xff0c;我的CSDN博文学习笔记中&#xff0c;收集并展示浏览阅读&#xff0c;点赞收藏评论等数据&#xff0c;以浏览阅读量排逆序展示。 (笔记模板由python脚本于2024年03月21日 10:07:07创建&#xff0c;本篇笔记适合熟悉Python&#xff0c;对其基…

spring boot3登录开发-2(2短信验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 内容简介 短信验证码接口实现 1.依赖导入 2.接口分析 3.实现思路 3.功能实现 创建发送短信…

PTA L2-041 插松枝 代码附注释

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上&#xff0c;做成大大小小的松枝。他们的工作流程&#xff08;并不&#xff09;是这样的&#xff1a; 每人手边有一只小盒子&#xff0c;初始状态为空。每人面前有用不完的松枝干和一个推送器&#xff0c;每次推送一…

一些刷题需要用的大数据

无符号版本和有符号版本的区别就是有符号类型需要使用一个bit来表示数字的正负。 如果需声明无符号类型的话就需要在类型前加上unsigned。 整型的每一种都分为&#xff1a;无符号&#xff08;unsigned&#xff09;和有符号&#xff08;signed&#xff09;两种类型&#xff08;f…

【小沐学AI】Google AI大模型的一点点学习(Python)

文章目录 1、Google AI简介1.1 Google AI Studio1.2 Bard1.3 PaLM1.4 Gemini1.5 Gemini API1.6 Vertex AI1.7 Gemma 2、Google AI开发2.1 快速入门2.1.1 配置开发环境2.1.2 列出所有模型2.1.3 从文本输入生成文本2.1.4 从图像和文本输入生成文本2.1.5 聊天对话 结语 1、Google …