当前位置: 首页 > 知识库问答 >
问题:

flutter:在flutter中是否可以在另一个dropdownbutton满足某一要求后显示另一个dropdownbutton

吕亮
2023-03-14

例如,这是第一个Dropdownbutton例如,这是第一个Dropdown对不起,我没有足够的声誉来张贴图像

共有1个答案

马绪
2023-03-14

每次调用setstate时,将调用小部件的build方法,并在需要的地方重建可视化树。因此,在dropdownbuttononchanged处理程序中,将所选内容保存在setstate中,并有条件地添加第二个dropdownbutton。下面是一个工作示例(边缘可能有点粗糙:)):

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _selectedRegion;
  String _selectedSecond;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Something before'),
            DropdownButton<String>(
              value: _selectedRegion,
              items: ['Arizona', 'California']
                  .map((region) => DropdownMenuItem<String>(
                      child: Text(region), value: region))
                  .toList(),
              onChanged: (newValue) {
                setState(() {
                  _selectedRegion = newValue;
                });
              },
            ),
            _addSecondDropdown(),
            Text('Something after'),
          ],
        ),
      ),
    );
  }

  Widget _addSecondDropdown() {
    return _selectedRegion != null
        ? DropdownButton<String>(
            value: _selectedSecond,
            items: ['First', 'Second']
                .map((region) => DropdownMenuItem<String>(
                    child: Text(region), value: region))
                .toList(),
            onChanged: (newValue) {
              setState(() {
                _selectedSecond = newValue;
              });
            })
        : Container(); // Return an empty Container instead.
  }
}

Luke Freeman有一篇关于在Flutter中管理可见性的博客文章,如果您需要一种更广泛/可重用的方式的话。

 类似资料:
  • 我有一个应用程序,它有一个列表,当它为空时,它显示“空”,但我想显示任何东西,而不是它,但我不能。我试着做了一个验证,但由于某种原因它仍然显示为null。 代码如下: 但以下是它的表现: 我做错了什么?

  • 问题内容: 是否可以在另一个CSS文件中包含一个CSS文件? 问题答案: 是: 注意: 该规则必须先于所有其他规则(除外)。 其他语句需要其他服务器请求。或者,将所有CSS连接到一个文件中,以避免多个HTTP请求。例如,复制的内容和入和仅供参考。

  • 问题内容: 例如,如果我具有以下HTML: 和这个CSS: 就像在脚本语言中一样,您具有通常在脚本顶部编写的通用函数,而每次需要使用该函数时,只需调用该函数即可,而不必每次都重复所有代码。 问题答案: 不,您不能从另一个引用一个规则集。 但是,您可以在样式表中的多个规则集上重用选择器, _并_在单个规则集上使用多个选择器通过用逗号分隔它们。 您还可以将多个类应用于单个HTML元素(class属性采

  • 问题内容: 我的表设置如下: 我想构造一个select语句,该语句将显示在value_search中没有条目的所有进程名称(带有其各自的id_string)。 进程表中的id_string可以为 null ,并且仍然具有名称,但是如果可能的话,必须将其排除。value_search中的id_string永远不能为 null 我该怎么做呢? 问题答案: 通常,如果您想要其他表中不存在的行,则将LEF

  • 我对React和react-router-dom(v6)非常陌生,我偶然发现了一个错误:错误:您无法渲染

  • 问题内容: 我有点麻烦。我有一项作业,要求我找出第二个圆圈是否重叠,内部是否重叠或两者都不存在。但是,我在检查重叠以及第二个圆是否在第一个圆内时遇到了麻烦。 (使用的变量为x1,x2,y1,y2,r1,r2,距离) 这是我所拥有的: 我担心问题在于重叠和内部检查,但是我无法弄清楚如何正确设置它,因此我可以可靠地检查第二个圆是否在第一个圆的内部。 当我尝试了多种方法时,任何帮助或建议都将不胜感激,但