как сделать так, чтобы кнопка была неактивна после нажатия dart flutter

#flutter #dart

Вопрос:

У меня есть эта кнопка, я хочу, чтобы она была неактивна или исчезла после нажатия. что я должен реализовать внутри onPressed ?

 const Divider(thickness: 1.5, height: 1),  Container(  width: 200,  child: ElevatedButton(  style: ElevatedButton.styleFrom(  //alignment: Alignment.bottomCenter,  shape: RoundedRectangleBorder(  borderRadius: BorderRadius.circular(100.0),  ),  //padding: EdgeInsets.all(2),  elevation: 0,  primary: Color(0xff71B4CC),  shadowColor: Colors.transparent),  child: Text("Generate",  style: GoogleFonts.asap(  fontSize: 18,  color: const Color(0xffffffff),  fontWeight: FontWeight.w700,  )),  onPressed: () {  timeInMin(timeList[selectedIndex ?? 0]);  },  ))  ],  

Ответ №1:

Чтобы включить или отключить кнопку, вам нужно состояние, поэтому это должно быть StatefulWidget состояние , в котором disabled переменная существует в классе состояния:

 onPressed: disabled   ? null  : () =gt; {   timeInMin(timeList[selectedIndex ?? 0]);   setState(() { disabled = true; });  },  

Установка onPressed обработчика в значение null отключит кнопку.

Комментарии:

1. будет ли он активен после того, как я снова войду на страницу ?

2. Зависит от того, когда вы установили переменную или где вы ее сохранили.

3. как бы вы могли объяснить, что я должен сделать, чтобы он снова стал активным после обновления

4. Ну, все, что вам нужно сделать, это вернуть переменной значение false. Затем он снова активен.

Ответ №2:

Вы должны пройти через один и тот же подход, чтобы получить оба результата

чтобы скрыть кнопку

 class _MyHomePageState extends Statelt;MyHomePagegt; {   bool _isVisible = true;   @override  Widget build(BuildContext context) {  return Scaffold(  appBar: AppBar(  title: Text(widget.title),  ),  body: Center(  child: SingleChildScrollView(  child: Visibility(  visible: _isVisible,  child: SizedBox(  child: ElevatedButton(onPressed: (){  setState(() {  _isVisible = false;  });  }, child: Text("Click Me"))  ),  ),  ),  ),  );  } }  

и отключить кнопку

 class _MyHomePageState extends Statelt;MyHomePagegt; {   bool _isDisabled = true;   @override  Widget build(BuildContext context) {  return Scaffold(  appBar: AppBar(  title: Text(widget.title),  ),  body: Center(  child: SingleChildScrollView(  child: SizedBox(  child: ElevatedButton(onPressed: _isDisabled ? null : (){  setState(() {  _isDisabled = false;  });  }, child: Text("Click Me"))  ),  ),  ),  );  } }