私はフラッターが初めてで、2つのドロップダウンボタンを作成したという点で、休暇申請を作成しています。From Date Half Leave:のその 1 つの DropdownButton とTo Date Half Leaveの 2 番目のドロップダウン ボタン。両方の DropdownButton に同じアイテム リストを表示しています。問題は、From Date Half Leave から同じ項目を選択すると、2番目の DropdownButton で同じオプションを非表示にしないでください。これは、 To Date Half Leave を意味します。
たとえば、開始日と終了日 が同じ場合、両方のドロップダウンボタンに表示オプションが表示されますが、ユーザーが開始日から1つのアイテムを選択すると、終了日ハーフ休暇のアイテムオプションが非表示になります。開始日と終了日が異なる場合は、開始日の半休暇と終了日の半休暇に反対のオプションが表示されます。たとえば、開始日の半休暇が朝を選択し、終了日の半休暇で午前のオプションが表示されない場合は、午後のオプションのみが表示されます。開始日半休暇と終了日半休暇その時だけ違います。仕方ないので助けてください…
以下の私のコード: From DateとTo Dateが同じ場合、 To Date Half Leaveの項目を無効にしようとしています。
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;
});
},
) ,