flutter - Flutter 前一个 DropDownFormField 有数据后如何创建 DropDownFormField
问题描述
我是 Flutter 的新手。我想问的是什么时候我有一个DropDownFormField
和三个值。当我选择 3 个值之一时,我将如何显示一个与先前选择的值相关联的新DropDownFormField
值dataSource
。
例如我有 House, Hotel, Apartment => Select House => display new DropDownFormField has Room, Kitchen
或 Select Hotel => display new DropDownFormField has Single Room, Double Room
有没有我可以参考的例子?
解决方案
有几种方法可以满足您的要求,但让我使用 Flutter 命名法重申您的查询,这应该可以帮助您找到更多信息。(DDFF = DropDownFormField)
您有两个小部件,当第一个小部件更改状态时,您希望显示另一个小部件。
最简单的方法是创建一个Stateful
包含两个 DDFF 的自定义小部件(在 Column()、Row() 等中)。小部件的状态是其变量中的值。对于此自定义小部件,您至少想知道是否为第一个 DDFF 选择了一个值以及该值是什么,以便您可以更改有关第二个小部件的内容。所以有一个状态变量:String ddff1Value;
当您使用build()
您的小部件时,您将根据状态决定要显示的内容。build()
您可以使用 if() 或三元运算符更改从小部件函数返回的内容。如果 ddff1Value==null(尚未选择任何内容),则不显示第二个 DDFF。
您还想知道您的第一个 DDFF 小部件选择何时更改,并且 DDFF 提供了一个回调函数onChanged
,当它更改时将调用该回调函数。当它发生变化时,您希望更新(设置)小部件的状态以存储该更改,然后重新绘制反映该更改的小部件。
要设置有状态小部件的状态,请调用setState()
. 在您的第一个 DDFF 中:
onChanged: (val) {
setState(() {
ddff1Value = val;
}
}
当您调用 setState() 时,Flutter 会在之后自动重绘您的小部件。而已。
- 创建您的自定义有状态小部件
- 在 build() 方法中,根据状态决定绘制什么
- DDFF 变化时使用 onChanged() 获取值
- 调用 setState() 来更新小部件的状态并重绘
推荐阅读
- c - 如何阅读复杂的定义
- ios - Spotify 令牌交换:不支持的 URL 错误
- electron - console.log 进入 devTools 进入 Electron 应用程序和渲染器进程
- php - 使用 jQuery 为 Woocommerce 中的特定状态更改一些结帐字段类型
- go - 命名空间路由
- c# - Json.NET 使用自定义格式序列化/反序列化日期时间数组
- ios - 如何在使用新构建系统构建我的 SDK 聚合项目时修复 Xcode 10 GM 错误?
- c++ - c++11 unordered_set 带有哈希函数语法错误
- c# - 在 webform 项目中显示 MVC webgrid 时出现问题
- python - Python在迭代期间就地修改dict条目