如何在颤动中设置下拉弹出窗口的动态高度

2023-11-23

我是颤振开发的新手。我正在使用我的应用程序的下拉按钮。打开下拉菜单时,弹出对话框中的文本被剪切。下面我附上了带有编码的屏幕截图。请指导我解决这个问题。

DropdownButtonHideUnderline(
    child: new DropdownButton(
        isExpanded: true,
        value: dropDownValue,
        isDense: true,
        //icon: Icon(Icons.keyboard_arrow_down, color: Colors.white,),
        onChanged: (String newValue) {
            setState(() {
                dropDownValue = newValue;    
                state.didChange(newValue);
            });
        },
        items: dropDownList.map((String value) {
            return new DropdownMenuItem(
                value: value,
                child: new SizedBox(
                width: MediaQuery.of(context).size.width / 1.4,
                child: new Text(value,
                    softWrap: true,
                    style: TextStyle(color: Colors.white, fontSize: 18.0),),)
                );
            }).toList(),
        ),
    ),
);

enter image description here


复制DropdownMenuItem像其他人建议的那样是不够的DropdownButton需要items属于类型List<DropdownMenuItem<T>>.

我创建了以下小部件,它应该有助于解决您的问题:

import 'package:flutter/material.dart';

/// Looks like a DropdownButton but has a few differences:
///
/// 1. Can be opened by a single tap even if the keyboard is showing (this might be a bug of the DropdownButton)
///
/// 2. The width of the overlay can be different than the width of the child
///
/// 3. The current selection is highlighted in the overlay
class CustomDropdown<T> extends PopupMenuButton<T> {
  CustomDropdown({
    Key key,
    @required PopupMenuItemBuilder<T> itemBuilder,
    @required T selectedValue,
    PopupMenuItemSelected<T> onSelected,
    PopupMenuCanceled onCanceled,
    String tooltip,
    double elevation = 8.0,
    EdgeInsetsGeometry padding = const EdgeInsets.all(8.0),
    Icon icon,
    Offset offset = Offset.zero,
    Widget child,
    String placeholder = "Please select",
  }) : super(
    key: key,
    itemBuilder: itemBuilder,
    initialValue: selectedValue,
    onSelected: onSelected,
    onCanceled: onCanceled,
    tooltip: tooltip,
    elevation: elevation,
    padding: padding,
    icon: icon,
    offset: offset,
    child: child == null ? null : Stack(
      children: <Widget>[
        Builder(
          builder: (BuildContext context) => Container(
            height: 48,
            alignment: AlignmentDirectional.centerStart,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                DefaultTextStyle(
                  style: selectedValue!= null ? Theme.of(context).textTheme.subhead
                      : Theme.of(context).textTheme.subhead.copyWith(color:     
Theme.of(context).hintColor),
                  child: Expanded(child: selectedValue== null ? Text(placeholder) : child),
                ),
                IconTheme(
                  data: IconThemeData(
                    color: Theme.of(context).brightness == Brightness.light
                        ? Colors.grey.shade700 : Colors.white70,
                  ),
                  child: const Icon(Icons.arrow_drop_down),
                ),
              ],
            ),
          ),
        ),
        Positioned(
          left: 0.0,
          right: 0.0,
          bottom: 8,
          child: Container(
            height: 1,
            decoration: const BoxDecoration(
              border: Border(bottom: BorderSide(color: Color(0xFFBDBDBD), width: 0.0)),
            ),
          ),
        ),
      ],
    ),
  );
}

它实际上延伸了PopupMenuButton正如你所看到的,但我让它看起来和DropdownButton.

itemBuilder需要返回List<PopupMenuEntry<T>>,每个条目通常是PopupMenuItem您可以向其中提供任何child widget.

selectedValue是当前选择的值,该值将在叠加层中突出显示。如果为空,则Text小部件与placeholder显示字符串。如果不为空,则child显示小部件。

您应该能够通过修改此类来禁用突出显示super()initialValuenull,或者更好地向构造函数添加一个布尔值以从外部控制它。

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

如何在颤动中设置下拉弹出窗口的动态高度 的相关文章

随机推荐

  • R:从数值变量和自定义/开放式/单值区间创建分类变量

    我经常发现自己尝试从数值变量 用户提供的一组范围创建分类变量 例如 假设我有一个带有数字变量的 data framedf V并想创建一个新变量df VCAT这样 df VCAT 0 if df V等于 0 df VCAT 1 if df V
  • 通过补丁或合并提案在启动板上提交错误修复?

    我是新来的发射台 and Bazaar 我正在尝试找出提交错误修复的最佳方法 我正在使用一些托管在 Launchpad 上的相当流行的开源软件 但它不是很稳定 我创建了自己的项目分支来稳定它 并仅应用我们需要的错误修复 而无需添加正在进行的
  • 如何使用API​​网关调用AWS步骤函数?

    根据Amazon的文档 可以使用HTTP API调用step函数 Step Functions 可以通过 Step Functions 访问和使用 控制台 AWS 开发工具包或 HTTP API 我试图搜索详细信息 但似乎找不到任何好的信息
  • 按父 ID 的顺序选择记录

    简单的问题 只是无法按照我需要的顺序获得结果集 p 我有一个表 类别 id name parent 1 apple 0 2 macintosh 1 3 atari 0 4 st 3 5 lisa 1 我试图选择获取以下结果集 1 apple
  • Azure Web 应用程序的数据库连接速度慢

    我开发了一个 Web 应用程序 一个标准的 Web 应用程序 允许用户显示和更新 SQL 数据库中的一组数据 Web 应用程序使用 AngularJS 客户端 该客户端通过 MVC Web API 调用与 Web 服务器交互 以检索和更新数
  • 如何动态更改角度服务实现?

    我是 Angular2 的新手 并且我有两项服务DefaultService And SpecialService应根据组件状态交替使用 我不知道是否可以将单例注入到我的组件中GeneralService以某种方式表现得像DefaultSe
  • 禁用时间轴上的照片分组

    有谁知道Facebook何时将时间轴上同一相册中的照片分组 有可能阻止它这样做吗 如果您每天 通过 API 发布一张或两张图片 并带有指向其他网站的反向链接 并且 Facebook 将这些内容分组 那么其中一个链接可能永远不会被其他人看到
  • Jasmine.js 测试 - 监视 window.open

    JS var link this notificationDiv getElementsByTagName a 0 link addEventListener click function evt evt preventDefault vi
  • 类型“Microsoft.Reporting.WebForms.ReportViewer”存在于两者中

    我有一个 ASP NET 应用程序 它引用版本 9 0 0 0 的 Microsoft ReportViewer WebForms 我更改为引用版本 11 0 0 0 的 Microsoft ReportViewer WebForms 现在
  • 如何设置画布大小?

    我有一个名为 SeatsPanel 的类 我在 onDraw 方法中绘制座位 使用 drawRect onDraw方法使用Canvas作为参数 但是如何设置Canvas的大小呢 我之所以问这个问题是因为这个类在另一个类中被夸大了 我知道画布
  • R:合并同一数据表中的行,连接某些列

    我在 R 中有我的数据表 我想合并具有相同的行customerID 然后连接其他合并列的元素 我想从这里开始 title author customerID 1 title1 author1 1 2 title2 author2 2 3 t
  • 在 Android 中运行单元测试时,意图解析为不同的进程

    我有一个使用两个活动的小型应用程序 这两个活动都继承自 MapActivity 并显示地图 com google android maps 由于 Android 谷歌地图文档说 每个仅支持一个 MapActivity 过程 多个地图活动 同
  • 强制用户在 Java 中填充 varargs 参数的好方法[重复]

    这个问题在这里已经有答案了 我想强制用户在调用构造函数时填写可选参数 public MyClass String params this params params 目前 以下代码有效 new MyClass 我想阻止它 我想到了这一点 p
  • Biopython SeqIO 到 Pandas Dataframe

    我有一个可以轻松解析的 FASTA 文件SeqIO parse 我对提取序列 ID 和序列长度感兴趣 我用这些行来做到这一点 但我觉得它太重了 两次迭代 转换等 from Bio import SeqIO import pandas as
  • 用星号屏蔽Python中的用户输入[重复]

    这个问题在这里已经有答案了 我试图用星号掩盖用户在 IDLE 中输入的内容 这样他们周围的人就看不到他们正在输入 已经输入的内容 我正在使用基本的原始输入来收集他们输入的内容 key raw input Password 用户输入密码后理想
  • QSignalMapper 是如何工作的?

    我在这里发帖后 将信号和槽关联到动态创建的 qcheckbox我需要关联 信号clicked 当我点击一个qCheckBox我的职能cliqueCheckBox QTableWidget monTab int ligne QCheckBox
  • Oracle SQL 中的小于或等于

    updated date 08 Jun 2010 我有一个这样的查询 select from asd whre updated date lt todate 08 Jun 2010 dd MM yy 但我没有得到任何结果 它只有在以下情况下
  • C# 线程和阻塞 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道哪种方法是以线程安
  • Openlayers:矢量特征而不是标记

    我想在地图上放置一个符号 例如 到目前为止我已经使用了 OpenLayersOpenLayers Layer Markers 代码如下所示 map new OpenLayers Map map layer new OpenLayers La
  • 如何在颤动中设置下拉弹出窗口的动态高度

    我是颤振开发的新手 我正在使用我的应用程序的下拉按钮 打开下拉菜单时 弹出对话框中的文本被剪切 下面我附上了带有编码的屏幕截图 请指导我解决这个问题 DropdownButtonHideUnderline child new Dropdow