首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter dropdownButton setState on change在选择后不更新下拉文本以显示所选项目

Flutter dropdownButton是一个下拉选择按钮,可以在用户点击按钮后弹出一个下拉菜单,用户可以从菜单中选择一个项目。setState()函数用于在选择后更新界面,但有时候我们希望选择后不仅更新按钮文本,还要显示所选项目。

为了实现这个需求,可以使用一个StatefulWidget来管理下拉按钮的状态。下面是一个示例代码:

代码语言:txt
复制
import 'package:flutter/material.dart';

class MyDropdownButton extends StatefulWidget {
  @override
  _MyDropdownButtonState createState() => _MyDropdownButtonState();
}

class _MyDropdownButtonState extends State<MyDropdownButton> {
  String _selectedItem;

  @override
  Widget build(BuildContext context) {
    return DropdownButton(
      value: _selectedItem,
      items: [
        DropdownMenuItem(
          value: 'Item 1',
          child: Text('Item 1'),
        ),
        DropdownMenuItem(
          value: 'Item 2',
          child: Text('Item 2'),
        ),
        DropdownMenuItem(
          value: 'Item 3',
          child: Text('Item 3'),
        ),
      ],
      onChanged: (value) {
        setState(() {
          _selectedItem = value;
        });
      },
      hint: Text('Select an item'),
    );
  }
}

在这个示例中,我们定义了一个StatefulWidget _MyDropdownButtonState,它包含一个_selectedItem变量来保存选中的项目。在build方法中,我们使用DropdownButton来创建下拉按钮,并将_selectedItem作为选中的值传递给value参数。下拉菜单中的选项通过items参数来定义,每个选项都是一个DropdownMenuItem

当用户选择一个选项时,onChanged回调函数会被调用。在这个回调函数中,我们通过调用setState来更新_selectedItem的值,并触发界面重新构建。

这样,当用户选择一个选项后,界面会重新构建,并且下拉按钮的文本会更新为所选项目。

关于Flutter的更多信息和使用方式,你可以参考腾讯云的Flutter产品介绍页面:Flutter产品介绍

注意:以上答案仅供参考,具体使用时请根据实际情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter 专题】74 图解基本 DropdownButton 下拉选项框按钮

和尚对于 Flutter 并不系统,总是遇到问题才会准备尝试,今天和尚准备学习一下下拉选择框;Android 提供了便利的 Spinner 而 Flutter 对应的是 DropdownButton...源码分析 DropdownButton({ Key key, @required this.items, // 下拉选项列表 this.selectedItemBuilder...item 内容 }) 分析源码可知,items 和 onChanged 回调是必须参数,且不同状态下,展示的效果不同;其中 items 或 onChanged 为 null 时为禁用状态...style 为下拉选项列表中文字样式;但下拉列表 item 设置文本样式,以 item 设置为准; DropdownButton(style: style, icon: Icon(Icons.arrow_right...Icon(Icons.send, color: Colors.purpleAccent) ]), value: 3) ], onChanged: (value) => setState

7.7K31
  • Flutter 专题】104 图解自定义 ACEDropdownButton 下拉

    和尚之前尝试过 Flutter 自带的 DropdownButton 下拉框,简单方便;但仅单纯的原生效果不足以满足各类个性化设计;于是和尚以 DropdownButton 为基础,调整部分源码...iconChecked 选中图标; 下拉框在展示时不会遮挡 DropdownButton 按钮,默认在按钮顶部或底部展示; 下拉框展示效果调整为默认由上而下; 对于 DropdownButton...(context).canvasColor;当然我们也可以手动设置主题中的 canvasColor 来更新下拉框背景色; 和尚添加 backgroundColor 属性,并通过 ACEDropdownButton...,其中 isChecked 为 true 时,会展示选中图标,否则正常展示; item 的绘制是 _DropdownMenuItemButton 中加载的,可以通过 _DropdownMenuItemButton...避免遮挡 和尚选择自定义 ACEDropdownButton 下拉框最重要的原因是,Flutter 自带的 DropdownButton下拉框展示时会默认遮挡按钮,和尚预期的效果是: 若按钮下部分屏幕空间足够展示所有下拉

    2K20

    你知道吗,Flutter内置了10多种Button控件

    版本及Dart版本如下:Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我们使用,了解这些控件有助于提高我们的开发速度...“的按钮,基本用法: RaisedButton( child: Text('Button'), onPressed: (){ }, ) 效果: [1240] onPressed为null或设置时...DropdownButton下拉选择按钮,基本用法如下: var _dropValue = '语文'; _buildButton() { return DropdownButton(...''请选中",用法如下: DropdownButton( hint: Text('请选择'), value: null, ... ) 效果如下: [1240] 默认情况下,下拉选项的图标是倒立的三角...打开菜单,设置的值将会高亮,效果如下: [1240] 获取用户选择了某一项的值,或者用户未选中,代码如下: PopupMenuButton( onSelected: (value)

    2.5K00

    Flutter | 超实用简单菜单弹出框 PopupMenuButton

    相信实际开发过程当中,肯定少不了这样的功能: ? 点击 AppBar 右上角的按钮,弹出一个菜单供用户选择。 幸运的是,Flutter 提供给我们了一个 Widget,直接就能实现如上的效果。...大致意思为: 当按下的时候显示一个菜单,选择了一个项目的时候会回调 onSelected,传递的值是所选菜单的值。 可以提供 child or icon ,但是不能同时提供。...[ PopupMenuButton( onSelected: (WhyFarther result) { setState...总结 这样就完成了一个超级简单并且实用的菜单弹出框, 其实它的实现逻辑和 DropdownButton 差不多,都是使用了 PopupRoute, 有对这方面感兴趣的同学,可以查看我以前写的文章:Flutter...源码系列:DropdownButton 源码浅析 完整代码已经传至GitHub:https://github.com/wanglu1209/WFlutterDemo

    5.5K30

    flutter给图片加个好看的遮罩层【flutter20个实例之六】

    二、讲解 1.结构拆分 我们先看下页面布局结构,首先肯定是有个GridView滚动组件来容纳内容 其次顶部有个日期的选择,点击底部弹出下拉选择,可以选择不同年份 年份选择,进行内容刷新,数据重新加载...mainAxisAlignment: MainAxisAlignment.spaceBetween的布局排列 InkWell:为每个图标增加个点击事件 由于底部弹框也相当于一个页面,所以想要里面的select选择内容跟着变动...,就需要重定义setState() 4.核心内容列表就是一个GridView 一行显示4个 crossAxisCount: 4 左右间距 crossAxisSpacing: 10 上下间距 mainAxisSpacing...65%=59 70%=4c 75%=3F 80%=33 85%=21 90%=19 95%=0c 100%=00(全透明) 三、源码(可直接运行调试) import 'package:flutter...); } Widget selectYear(context1, state) { return DropdownButtonHideUnderline( child: DropdownButton

    4.2K30

    Flutter:使用复选框进行下拉多选

    Flutter:使用复选框进行下拉多选 本文向您展示了 Flutter 中使用复选框实现下拉多选的两种不同方法。第一种方法中,我们将从头开始构建多选。...第二种方法中,我们将使用第三方包快速完成工作。...可以通过选中/取消选中与其关联的复选框来选择或取消选择一个选项。 当按下升高的按钮时,将显示多选对话框。它让用户在编程中选择他们最喜欢的主题。所选主题将作为筹码显示屏幕上。...以下是我们的应用程序的运行方式: 构建自定义多选小部件 创建一个名为MultiSelect的可重用小部件,它可以获取选项列表(您可以对这些项目进行硬编码或从数据库/API 中获取它们): // Multi...但是,如果您有紧急任务并且只想尽快进行多选,那么使用第三方插件是一个不错的选择

    3.3K21

    Flutter ListView 下拉刷新,上拉加载更多

    正常项目中使用ListView一定会涉及到分页加载的问题,此时无法避免地需要用到下拉刷新和上拉加载更多的功能。 本文就当前知识面对这两个知识点做简单的实际demo介绍。...此标记始终列表数据的末尾,是判断列表滑动是否到达尾部的标记。...当监测到最后一条数据,又满足100条数据以下,显示loading动画布局,并去网络获取数据,获取到数据之后插入到结束标记之前。超过100条数据,显示没有更多了。 3.2....(() { //重新构建列表 }); }); } Future _toRefresh() async { // 延迟3秒添加新数据, 模拟网络加载...具导入方法体Flutter系列文章中的《Flutter问题:import 'package:english_words/english_words.dart'失败》一中有详细步骤。

    3.4K20

    Flutter 刷新页面:通过下拉刷新提升用户体验

    丰富的挂件中,Flutter 提供了一个很好的方式实现下拉来刷新应用。这个手势,对很多用户来说很熟悉,就是下拉页面来触发更新的动作,获取新的数据并更新屏幕展示。...下拉更新的基础 下拉刷新是应用移动端中的一个常见模式,它允许用户手动刷新页面内容。 Flutter 中,这个功能被封装在 RefreshIndicator 挂件中。...Flutter 响应式框架能够在数据更改时,更新应用程序的用户界面。 下拉刷新管理数据 为了有效联合下拉刷新来管理状态,我们可以众多 Flutter 生态中选择其中一种。...无论选择哪种方法,目标都是确保触发刷新操作时,应用程序的状态能够反映新数据,而不会导致用户界面的中断或者不一致。...当实现下拉刷新,我们经常需要 BuildContext 来触发状态的更改或者刷新导航到不同的屏幕。 比如,当新数据被抓取并且页面被更新,我们可能想展示一个成功信息的 SnackBar。

    26810

    Flutter应用程序添加交互性 顶

    您的项目中创建一个图像目录,并添加lake.jpg。 一旦你有一个连接和启用的设备,或者你已经启动了iOS模拟器(Flutter安装的一部分),你很好!...这些例子都是类似的工作 - 每创建一个容器,当点击时,绿色或灰色框之间切换。 _active布尔值确定颜色:绿色表示激活或者灰色表示激活。 ? ?...定义_handleTap()函数,轻击框时该函数更新_active,并调用setState()函数来更新UI。 实现小部件的所有交互式行为。...调用setState()以发生轻击和_active状态改变时更新UI。 _TapboxCState对象: 管理_highlight状态。 GestureDetector监听所有轻击事件。...按下时,抬起或点击取消调用setState()更新界面并且_highlight状态改变。 点击事件中,将该状态更改传递给父部件,以使用widget属性采取适当的操作。

    4.2K20

    Flutter 旋转轮

    显示了如何在flutter应用程序中使用「flutter_spinwheel」软件包运行「旋转轮」,并显示了当您点击该项目时,旋转器将移动。同样,您将沿顺时针/逆时针的任何方向移动微调器。...它将在您的设备上显示所选的文本。...**onChanged:**此 属性用于每次更改选择时从微调器菜单返回所选值的回调。 「select」:此 属性用于选择(突出显示)圆的扇区。范围是0(项目大小)。想象它就像一个数组。...每个人将获得一个相等分开的圈子部分;select表示圆的选择**(突出显示)「扇区的位置,「autoPlay」表示设置为true进行自动播放,「hideOthers」表示确定是否应绘制快门以隐藏除选定」...项「以外的所有选项,应当绘制边框」指令**确定是否应绘制边框,「onChanged」表示每次更改选择时从微调器菜单返回所选值的回调。

    8.8K20

    Flutter 专题】图解 ListView 下拉刷新与上拉加载 (一)

    和尚上次学 ListView 时,只学习了一下异步请求数据加载新闻和 Loading 等待的小知识点,但对于新闻列表数据的更新和加载更多是必不可少的,而实现【下拉刷新】与【上划加载更多】的方式有很多种...,今天和尚整理一下使用三方库 flutter_refresh 来实现列表的数据更新。...集成方式 pubspec.yaml 中 添加 flutter_refresh : ^0.0.2,并同步 packages get; 相应的 .dart 文件中添加引用 import 'package:...flutter_refresh/flutter_refresh.dart'; 数据加载时暂时不用 ListView 变更为 new Refresh,和尚主要是处理 onHeaderRefresh 下拉刷新...,但是都是第二次刷新才加载第一次刷新的数据,接口是正常的,但是数据总是慢一拍,和尚测试发现因为没有用 setState(() {}); 以后一定要注意,这样才可以实时进行更新

    1.6K31

    Flutter lesson 6: Flutter组件之基础组件(二)

    取值的话也是前端中对其方式的几种取值 start end center spaceBetween spaceAround spaceEvenly 唯一不同的是,Flutter中新增加了一个spaceEvenly...即你项目中用到的图片,比如logo。注意和接下来讲到的 Image.file 区分。 如果我们需要使用asset类的东西,需要在pubspec.yaml文件中进行配置。...还有,你可能需要image_picker这个插件来完成图片的选择以及拍照。这个插件IOS需要配置一下,安卓不用。...如果要设置图片的宽高,可以设置了width和height设置fit:BoxFit.cover属性。...noRepeat: 设置重复。默认值 repeat: 重复X轴与Y轴 repeatX: 重复X轴 repeatY: 重复Y轴 Image其他的几个属性基本上都用不到。

    2.2K20

    Flutter图像编辑器应用(1)—— 亮度和对比度调节实现

    项目实现在这一部分,将探讨如何使用Flutter来实现图像编辑器应用程序。逐步介绍如何使用Image Picker库选择图像、实现亮度和对比度调整功能,以及如何将编辑的图像保存到设备相册中。...= null) { // 更新图像提供者以显示选择的图像 setState(() { _imageProvider = FileImage(File(pickedFile.path...用户点击按钮,将会打开设备的相册,并允许用户选择一张图像。选择完成,将更新图像提供者,以应用中显示所选择的图像。实现亮度和对比度调整功能接下来,实现调整图像亮度和对比度的功能。...包含选择图像、调整亮度和对比度以及保存图像的功能。2. _pickImage函数_pickImage函数用于从设备的相册中选择图像,并将选定的图像显示应用程序中。...通过接收用户输入的值,并更新亮度和对比度状态来实现图像的调整。这些函数会触发UI的重新渲染,以实时显示调整的图像效果。4.

    36110

    Flutter】StatefulWidget 组件 ( FloatingActionButton 组件 | RefreshIndicator 组件 )

    设置状态的方法 , 修改当前选中索引 // 之后 BottomNavigationBar 组件会自动更新当前选中的选项卡 setState(() {...: 三目运算符 ), ); } } 运行效果 : 打印结果 : 点击悬浮按钮打印如下内容 ; I/flutter (23329): 悬浮按钮点击 二、RefreshIndicator..., 回调该方法 ; 异步方法 , 方法体前添加 async 关键字 ; 该方法的主要作用是暂停 500 ms , 然后返回空 ; /// RefreshIndicator 发生下拉操作时, 回调该方法..., child 字段设置 , 这里设置了一个 ListView 列表组件 , 然后设置了下拉刷新回调方法 , onRefresh 字段设置 ; // 刷新指示器组件...设置状态的方法 , 修改当前选中索引 // 之后 BottomNavigationBar 组件会自动更新当前选中的选项卡 setState(() {

    2.7K00

    Flutter App 中使用相机和图库flutter的图像选择

    Flutter App 中使用相机和图库/照片选取图像 图像选择是我们经常需要的用户配置和其他内容的常见组件。我们将使用插件来实现。 步骤 1 — 将依赖项添加到pubspec.yaml文件。...environment: sdk: ">=2.7.0 <3.0.0" dependencies: flutter: sdk: flutter image_picker: ^0.8.4...获取图像文件,我们将其保存到_image变量中并调用setState(),以便它可以显示屏幕中。...(() { _image = image; }); } 步骤4 - 创建用于选择相机/图库的选项选择 接下来,编写一个用于显示底部工作表的函数,供用户选择相机或图库选项。...最后,让我们屏幕上创建一个个人资料图片支架,该支架在单击时打开选择器,并显示所选图像。

    1.5K10

    重走Flutter状态管理之路—Riverpod进阶篇

    todos列表,只显示已完成的todos。...这意味着添加/删除/更新todos之前,已完成的todos列表不会被重新计算,即使我们多次读取已完成的todos列表。 请注意,当todos列表发生变化时,我们不需要手动使缓存失效。...虽然StateNotifierProvider的模板代码会多一些,但拥有一个自定义的StateNotifier类对于项目的长期可维护性至关重要--因为它将你的状态的业务逻辑集中一个地方。...更新状态的简化 参考下面的这个场景,有时候,我们需要根据前一个状态值,来修改后续的状态值,例如Flutter Demo中的加数器。...这种组合允许一些变量发生变化时自动重新获取一些数据,确保我们始终拥有最新的值。 ❝FutureProvider不提供在用户交互直接修改计算的方法。它被设计用来解决简单的用例。

    3.8K11
    领券