#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")) ), ), ), ); } }