如何制作flutter自定义下拉按钮?

2024-01-03

我要定制DropDownButton https://docs.flutter.io/flutter/material/DropdownButton-class.html,这样它就不会渲染内容DropdownItem https://api.flutter.dev/flutter/material/DropdownMenuItem-class.html。相反,它应该在从 DropDown 选择项目之前和之后呈现我的自定义布局/小部件。 简而言之,我想定制我的DropDownButton https://docs.flutter.io/flutter/material/DropdownButton-class.html.

Thanks,


如何渲染DropdownButton放下时物品会有所不同吗?

我通过找到了解决方案DropdownMenuItem. Its build()对于关闭和下拉状态分别执行。您可以使用上下文来确定它是否处于关闭或下拉状态。例如,您可以检查祖先有状态小部件。

我使用类似这个虚拟代码片段的东西:

DropdownButton<String>(
    value: selectedItem.id,
    items: items.map((item) {
        return DropdownMenuItem<String>(
            value: item.id,
            child: Builder(builder: (BuildContext context) {
                final bool isDropDown = context.ancestorStateOfType(TypeMatcher<PageState>()) == null;

                if (isDropDown) {
                    return Text(item.name);
                } else {
                    return Text(item.name, style: TextStyle(color: Colors.red));
                }
            },)
        );
    }).toList(),
);

Where items是一个列表id-name实例,以及页面状态是我自己的有状态小部件的状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作flutter自定义下拉按钮? 的相关文章

随机推荐

  • 转换 UTF8 文本以在 URL 中使用

    我正在开发一个国际网站 它使用 UTF8 显示非英语字符 我还使用包含项目名称的友好 URL 显然我不能在 URL 中使用非英文字符 这种转换有某种常见的做法吗 我不确定应该用哪些英文字符替换它们 有些字符非常明显 例如 到 e 但其他字符
  • Gradle 7.2:如何应用自定义 Gradle SETTINGS 插件?

    我正在将 buildSrc 约定插件迁移到独立插件中 有很多为 Project 对象创建 Gradle 插件的示例 但真正缺乏 Settings 和 Gradle 我想集中我们在 gradle settings kts 文件中使用的存储库列
  • Javascript 中弱引用的查找表

    我有一个树结构 其中动态添加和删除元素 这些元素是从网络动态加载的 我想要实现的是拥有一个查找表 将元素的 id 映射到树中的实际元素 现在 使用简单的映射或对象时的问题是它持有对树元素的强引用 这会在一段时间后使内存膨胀 由于节点 gt
  • 解析 XDocument,无需继续指定默认命名空间

    我有一些 XML 数据 类似于下面的示例 我想读取代码中的值 为什么我必须指定默认命名空间来访问每个元素 我希望所有元素都使用默认名称空间 有更合乎逻辑的方法来实现我的目标吗 XML 示例
  • 共享转换不起作用 recyclerview 到片段

    我正在尝试在我的应用程序中实现共享转换 我想要 RecyclerView 中的 ImageView 将出现在下一个片段中 以共享从 RecyclerView 到片段的转换 但它不起作用 我是这样做的 回收商的物品布局
  • 如何将数据从一个HDFS复制到另一个HDFS?

    我有两个 HDFS 设置 想要将一些表从 HDFS1 复制 而不是迁移或移动 到 HDFS2 如何将数据从一个HDFS复制到另一个HDFS 是否可以通过 Sqoop 或其他命令行 DistCp 分布式复制 是用于在集群之间复制数据的工具 它
  • C# 中的泛型类成员?

    嘿 我想我的想法是错误的 但我不确定什么是最好的 我想要一个带有成员变量的类 该变量可以是任何类型 具体取决于当时的需要 到目前为止 我有这样的事情 public class ConfigSetting
  • 何时在 C# 中使用 SqlConnection.ClearAllPools()

    我注意到我的代码出错了sqlWrite ExecuteNonQuery 在几秒钟内执行 200 个插入查询后 我一直以为using将确保资源得到正确的重用 并且无需执行任何操作 这是我第一次收到此错误 我已经处理 sql c 近 3 年了
  • PHP 和 Java 之间的哈希

    我正在尝试在 PHP 中创建一个哈希值 将其存储在数据库中 然后在 Java 中验证该哈希值 到目前为止 它们都彼此独立地工作得很好 Java 可以散列和验证 java Php 可以散列和验证 php 但尽管我尽了最大努力 但它们并不能很好
  • css 将样式应用于除最后一行之外的所有元素

    我有一个产品类别页面 每行 3 个产品 我希望每一行都有一个边框底部except对于最后一行 这应该没有边框底部 最后一行可能包含 1 2 或 3 li 元素 我当前使用的代码将 border bottom 属性应用于每 3 个 li li
  • 从 AppLoading 中看不到启动屏幕

    import React from react import AppLoading from expo app loading export default function App return
  • Google Play Android Developer API 401 权限不足

    我在用着Google Play Android 开发者 API https developers google com android publisher index服务器到服务器检查用户订阅的订阅状态 但在成功授权并请求现有订阅后 我收到
  • php - 如何将 HTML 表数据插入 MySQL

    我有一个带有文本和单选输入的 HTML 表 我想使用 PHP 将每一行插入到我的 MySQL 表中 MySQL 表如下所示 Name Status Ext HTML表格 Name Present Excused Unexcused Ext
  • 按 Enter 键时使用 ajax 发送数据

    我有这样的表格
  • 错误:require.paths 被删除。当运行node.js和socket.io时

    javascript Iv 在运行 github 上的 socket io 示例时遇到错误https github com LearnBoost socket io git https github com LearnBoost socke
  • 制作随机整数数组

    我尝试生成一个随机 int 值数组 其中随机值在最小值和最大值之间取 到目前为止我想出了这段代码 int Min 0 int Max 20 int test2 new int 5 Random randNum new Random fore
  • 刷新关系而不重新加载模型

    我有这样的情况 1 model 模型 where someCondition 在上面的代码之后 我对 model 子关系进行了一些更新 模型具有设置关系 因此我更新它们并将它们保存到数据库中 然后我稍后尝试访问 model gt setti
  • Spring transactionManager 正在回滚,而 testException=[null]!

    为什么事务没有回滚Exception 未保存该对象 我定义了交易参数 例如 Transactional value transactionManager timeout 30 rollbackFor java lang Exception
  • 如何将网站上不存在的链接重定向回主页

    我的问题是如何将我的网站上任何不存在的链接重定向回主页 例如 想象一下 如果用户输入 我的网站上有一个名为 pets 的页面 http mywebsite com pets http mywebsite com petsd http myw
  • 如何制作flutter自定义下拉按钮?

    我要定制DropDownButton https docs flutter io flutter material DropdownButton class html 这样它就不会渲染内容DropdownItem https api flu