首页 > 解决方案 > Flutter 前一个 DropDownFormField 有数据后如何创建 DropDownFormField

问题描述

我是 Flutter 的新手。我想问的是什么时候我有一个DropDownFormField和三个值。当我选择 3 个值之一时,我将如何显示一个与先前选择的值相关联的新DropDownFormFielddataSource

例如我有 House, Hotel, Apartment => Select House => display new DropDownFormField has Room, Kitchen

或 Select Hotel => display new DropDownFormField has Single Room, Double Room

有没有我可以参考的例子?

标签: flutterdart

解决方案


有几种方法可以满足您的要求,但让我使用 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() 来更新小部件的状态并重绘

推荐阅读