当前位置: 首页 > news >正文

第三百一十回

我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在第一百六十三回中介绍了showMenu相关的内容,它主要用来显示移动PopupMenu在页面中的位置。如果大家忘记的话,可以点击这里查看详细的内容。本章回中
将在此基础上补充一些新的使用方法。

2. 基本用法

我们可以使用showMenu方法来移动PopupMenu,移动时主要使用了该方法提供的positon参数,这个内容我们在前面章回中介绍过,这里不再展开详细讨论。我们先看
一下showMenu方法的函数原型,详细如下:

Future<T?> showMenu<T>({required BuildContext context,required RelativeRect position,required List<PopupMenuEntry<T>> items,T? initialValue,double? elevation,Color? shadowColor,Color? surfaceTintColor,String? semanticLabel,ShapeBorder? shape,Color? color,bool useRootNavigator = false,BoxConstraints? constraints,Clip clipBehavior = Clip.none,
}) {}

从中可以看到它返回的是一个Future对象。因此我们可以像使用Future一样使用它。下面是该方法的基本用法,详细如下:

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'),),],)

3. 补充用法

我们在上一小节介绍了showMenu的基本用法,下面是该方法的补充用法:

showMenu(context:context,position: const RelativeRect.fromLTRB(170, 180, 110, 10),items: [///省略,可以参考上面小节的代码 ],).then((value) => null).whenComplete(() => null);

该用法中主要以Future的方式运行,我们可以在PopMenu关闭后做一些逻辑任务。比如popMenu关闭后会调用then方法,此时可以在该方法中做一些逻辑业务。当
然了,具体的业务与项目有关,我习惯在popMenu关闭时恢复被popMenu遮挡的页面。

4. 内容总结

最后,我们对本章回中的内容做一个全面总结:

  • 可以单独显示PopMenu,也可以和结合showMenu方法一起使用;
  • 我们可以通过showMenu方法的参数来控制PopMenu的位置;
  • 我们可以像Futrue一样使用showMenu方法;
    看官们,与"再谈showMenu的用法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

  • ELAdmin 部署
  • String为什么是不可变的
  • LabVIEW伺服阀动静态测试系统
  • 第四篇:SQL语法-DDL-数据定义语言
  • vue的网络请求以及封装
  • ClickHouse--10--临时表、视图、向表中导入导出数据
  • 奔跑吧小恐龙(Java)
  • Python是垃圾?千万不要再学Python了?
  • Python爬虫之文件存储#5
  • BDD - Python Behave 用户自定义配置文件
  • 从REPR设计模式看 .NET的新生代类库FastEndpoints的威力
  • 50. C++ 指针函数与函数指针
  • 【Linux取经路】文件系统之被打开的文件——文件描述符的引入
  • C++Linux网络编程:poll模型和简单使用
  • 问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 #学习方法#学习方法
  • Angular 响应式表单 基础例子
  • hadoop集群管理系统搭建规划说明
  • js中forEach回调同异步问题
  • MySQL的数据类型
  • springboot_database项目介绍
  • 测试如何在敏捷团队中工作?
  • 翻译:Hystrix - How To Use
  • 给第三方使用接口的 URL 签名实现
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 记一次删除Git记录中的大文件的过程
  • 收藏好这篇,别再只说“数据劫持”了
  • 系统认识JavaScript正则表达式
  • 学习HTTP相关知识笔记
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​马来语翻译中文去哪比较好?
  • ​批处理文件中的errorlevel用法
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #Linux(make工具和makefile文件以及makefile语法)
  • (C语言)字符分类函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Linq学习笔记
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net Stream篇(六)
  • .NET 服务 ServiceController
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [4.9福建四校联考]
  • [BUG]Datax写入数据到psql报不能序列化特殊字符