#flutter #button #conditional-statements
Вопрос:
У меня есть 2 кнопки, одна из которых-тайм-аут, а другая-тайм-аут.
Ниже приведены условия, которые должны выполняться для включения и выключения кнопки.
Кнопка «Время в» будет включена, когда :
timeout != null || timein == null //these timein and timeout values should comes from database, but in below code I am using variables and updating their values. i'm not using database values here.
и его цвет фона будет синим[500]
Кнопка «Время в» будет отключена, когда :
timein != null amp;amp; timeout==null //these timein and timeout values should comes from database, but in below code I am using variables and updating their values. i'm not using database values here.
и цвет фона изменится на синий[200]
кнопка тайм-аута будет, включите, когда:
time in != null
кнопка тайм-аута отключится, когда:
time in == null
Вот что я сделал.
var t1="";
var t2="";
var timeIn;
var timeOut;
var timeInText=" Time in";
var timeOutText=" Time out";
bool timeInBttonPressed=false;
bool timeOutButtonPressed=false;
timein=="" || timeout!="" ?
RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500],
press:(){
setState(() {
timeInText=" " getTime;
//timein=getTime;
timeOutButtonPressed=true;
//timeInBttonPressed=true;
});
})
//Time in, disable:
:
RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
bgcolor: Colors.blue[200],
text:" " timein,
press:(){
setState(() {
timeInBttonPressed=false;
});
})
),
//Time out, disable
timein==""?
RoundedButton(icon: Icon(Icons.timer_off,color: Colors.white),bgcolor: Colors.blue[200],
text: " Time out",color: Colors.white,
press: (){
setState(() {
timeInBttonPressed=true;
});
},
)
//time out enable
:
RoundedButton(icon: Icon(Icons.timer_off,color: Colors.white,),
text: timeOutText,
color: Colors.blue[50],
bgcolor: timeOutButtonPressed ?Colors.blue[500]:Colors.blue[200],
press:(){
setState(() {
timeOutText=" " getTime;
//timeout=getTime;
//timeOutButtonPressed=!timeOutButtonPressed;
timeInBttonPressed=true;
});
})
Это не соответствует моим требованиям, не могли бы вы, ребята, пожалуйста, проверить это и помочь мне исправить то, что я делаю неправильно.
——————-РЕДАКТИРОВАТЬ ВОПРОС—————————
я отредактировал ваш ответ , вот код
Widget _timein() {
//enable
if(timeout != "" || timein == "") {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500],
press: () {
setState(() {
timeInText=" " getTime;
timein=getTime;
//print("t1 " t1);
timeInBttonPressed=true;
});
//Your OnPress Event
});
}
//disable
else if(timein != "" amp;amp; timeout=="") {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: Colors.blue[200]);
}
}
Widget _timeout(){
//enable
if(timein != "") {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeOutText,
bgcolor: timeOutButtonPressed ?Colors.blue[200]:Colors.blue[500],
press: () {
setState(() {
timeOutText=" " getTime;
timeout=getTime;
//print("t2 " t2);
//timeOutButtonPressed=true;
timeInBttonPressed=true;
});
});
}
//disable
else if(timein == "") {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeOutText,
bgcolor: Colors.blue[200]);
}
}
это работает так: сначала я включил кнопку «Время» и отключил кнопку «тайм-аут», что правильно, затем, когда я нажимаю кнопку «Время», ее текст меняется на текущее время, и она отключается, а кнопка «тайм-аут» включается, что правильно, но когда я нажимаю кнопку «тайм-аут», ее текст меняется на время, но цвет не меняется. я хочу отключить его после нажатия, и кнопка «Время в» будет включена, и наоборот.
надеюсь, ты понял мою точку зрения.
Комментарии:
1. В описании вы упомянули тайм-аут и тайм-аут, но в фрагменте кода вы используете t1 и t2?
2. да, я упоминал, что эти значения времени и времени ожидания поступают из базы данных, но для тестирования (без использования базы данных) я использую переменную
3. позвольте мне отредактировать сообщение для вашего удобства, чтобы вы могли понять
4. @MuhammadAhmed проверьте вопрос сейчас, я отредактирую его.
Ответ №1:
Прежде всего "" != null
. Вы сравниваете время и время ожидания с пустой строкой. Другое дело-создать отдельную функцию, чтобы сделать ее читаемой.
Widget _timer() {
if(timeout != null || timein == null) {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500],
onPress: () {
//Your OnPress Event
})
} else if(timein != null amp;amp; timeout==null) {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500])
}
else if(timein != null) {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500],
onPress: () {
//Your On Press Event
})
}
else if(timein == null) {
return RoundedButton(icon: Icon(Icons.timer,color: Colors.white),
text:timeInText,
bgcolor: timeInBttonPressed ?Colors.blue[200]:Colors.blue[500])
}
Если вы хотите отключить событие щелчка, не добавляйте это свойство onPress
}
Комментарии:
1. Спасибо, но это все еще не соответствует моим требованиям, я редактирую свой пост, пожалуйста, проверьте его.