如何根据Flutter中的条件启用/禁用DropDownButton?

时间:2020-07-30 06:10:50

标签: flutter dart dropdownbutton

我是新手,我正在制作请假应用程序,因为我创建了两个DropdownButton。在其中一个下拉菜单中,用于从日期半休假:和第二个用于从日期半休假。我在两个DropdownButton中都显示相同项目列表。 问题是,当我从从日期半休假中选择相同的项目时,它应该不要隐藏第二个DropdownButton中的相同选项,这意味着在到日期半休假中离开

例如,如果起始日期结束日期相同,则我想这样做,但是当用户从中选择一项时>从日期半休假开始,然后将其隐藏在日期半休假中。并且如果发件人日期发件人日期不同,则会在发件人半休假发件人半休假就像从日期半休假中选择早晨,然后在至日期半休假中一样,如果从日期半休假开始,我不显示早晨选项,仅显示下午选项迄今为止约会半休假只是不同。 我无法执行此操作,所以请帮助我。

以下我的代码:当起始日期截止日期相同时,我只是尝试禁用截止日期半休假当用户选择从日期半休假下拉菜单项时,将禁用到日期半休假中的项目。

var _days = ['早晨','下午',];

    Padding(
                   padding: const EdgeInsets.only(top:8.0),
                   child: Row(
                  children: <Widget>[
                    Container(
                      //width: 200.0,
                      child: Text('From Date :',
                      style: Theme.of(context).textTheme.subtitle2.copyWith(color: Colors.black),
                      ),
                    ),            
                  ]
                ),
              ), 
                 Container(
                       child: Column(
                         children: <Widget>[
                           ListTile(
                            trailing: Icon(Icons.calendar_today),
                            title: Text('$_formdate'),
                            contentPadding: EdgeInsets.only(left:4.0,right:0.0,),
                            enabled: true,
                            onTap: (){
                             _chooseDate(context);
                             } 
                          ),
                        ],
                      ),
                    ), 
                Padding(
                   padding: const EdgeInsets.only(top:8.0),
                     child: Row(
                  children: <Widget>[
                    Container(
                      child: Text('To Date :',
                      style: Theme.of(context).textTheme.subtitle2.copyWith(color: Colors.black),
                      ),
                    ),            
                  ]
                ),
               ), 
               Container(
                       child: Column(
                        children: <Widget>[
                        ListTile(
                        trailing: Icon(Icons.calendar_today),
                        title: Text('$_todate'),
                        contentPadding: EdgeInsets.only(left:4.0,right:0.0,),
                        enabled: true,
                        onTap: (){
                        _chooseData2(context);
                             } 
                          ),
                        ],
                      ),
                    ),
                Padding(
                  padding: const EdgeInsets.only(top:8.0),
                  child: Row(
                  children: <Widget>[
                    Container(
                    child: Text('From Date Half leave :',
                    style: Theme.of(context).textTheme.subtitle2.copyWith(color: Colors.black),
                      ),
                    ),            
                  ]
                ),
             ),   
        new DropdownButton<String>(
            dropdownColor: Colors.grey[300],
            value: currentFDHLvalue,
            isExpanded: true,
            items: _days.map((String value) {
              return new DropdownMenuItem<String>(
              value: value,
                child: new Text(value),
                            );
                          }).toList(),
                          underline: Container(
                        height: 1,
                        color: Colors.black26,
            ),
              onChanged: (newValue) {             
              if (_formdate == _todate && currentFDHLvalue != null) {
                setState(() {  });
                             } else{
                               setState((){ 
                                 currentTDHLvalue;
                               disabledItems = false;
                               });
                             }
                         setState(() { 
                            currentFDHLvalue = newValue;
                          }); 
                        },     
          ) ,
      Padding(
        padding: const EdgeInsets.only(top:8.0),
           child: Row(
            hildren: <Widget>[
            Container(
            child: Text('To Date Half leave :',
            style: Theme.of(context).textTheme.subtitle2.copyWith(color: Colors.black),
          ),
        ),            
      ]
    ),
  ),            
        new DropdownButton<String>(
          dropdownColor: Colors.grey[300],
            value: currentTDHLvalue,
            isExpanded: true,
            elevation: 22,
            items: _days.map((String value) {
               return new DropdownMenuItem<String>(
                value: value,
                 child: new Text(value,
                 style: TextStyle(
                  color: !disabledItems ? Colors.grey : null,
            )
          ),
        );
      }).toList(),
        underline: Container(
         height: 1,
         color: Colors.black26,
            ),
      onChanged: (newValue) {
              if (!disabledItems ? _formdate != _todate : currentTDHLvalue != newValue ) {
                setState(() {
                  currentTDHLvalue = newValue;
                  disabledItems = false;
                });
              }
            setState(() {
              currentTDHLvalue = newValue;
              });   
        },
) , 

image

0 个答案:

没有答案