Created
April 13, 2022 02:21
-
-
Save jacobaraujo7/0370294453986eda84325f37aba77600 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class HomePage extends StatefulWidget { | |
const HomePage({Key? key}) : super(key: key); | |
@override | |
State<HomePage> createState() { | |
return HomeState(); | |
} | |
} | |
class HomeState extends State<HomePage> with SingleTickerProviderStateMixin { | |
List<NumSeiOQue> naoSeiQue = [ | |
NumSeiOQue('Vc tem carro?'), | |
NumSeiOQue('Vc tem casa?'), | |
NumSeiOQue('Vc tem Esposa?'), | |
]; | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
body: Center( | |
child: ListView.builder( | |
itemCount: naoSeiQue.length, | |
itemBuilder: (_, index) { | |
final model = naoSeiQue[index]; | |
return Row( | |
children: [ | |
Text(model.title), | |
SizedBox( | |
width: 100, | |
child: ToggleButtonYesNo( | |
state: model.state, | |
onChange: (newState) { | |
setState(() { | |
naoSeiQue[index] = NumSeiOQue(model.title, newState); | |
}); | |
}, | |
), | |
), | |
], | |
); | |
}, | |
), | |
), | |
); | |
} | |
} | |
class NumSeiOQue { | |
final String title; | |
final ToggleButtonYesNoState state; | |
NumSeiOQue(this.title, [this.state = ToggleButtonYesNoState.none]); | |
} | |
enum ToggleButtonYesNoState { yes, no, none } | |
class ToggleButtonYesNo extends StatelessWidget { | |
final ToggleButtonYesNoState state; | |
final void Function(ToggleButtonYesNoState state)? onChange; | |
const ToggleButtonYesNo({ | |
Key? key, | |
this.state = ToggleButtonYesNoState.none, | |
this.onChange, | |
}) : super(key: key); | |
@override | |
Widget build(BuildContext context) { | |
return Row( | |
children: [ | |
GestureDetector( | |
onTap: () { | |
onChange?.call(ToggleButtonYesNoState.yes); | |
}, | |
child: Expanded( | |
child: Container( | |
color: state == ToggleButtonYesNoState.yes ? Colors.green : Colors.white, | |
child: Text( | |
'SIM', | |
style: TextStyle(color: state == ToggleButtonYesNoState.yes ? Colors.white : Colors.black), | |
), | |
), | |
), | |
), | |
SizedBox(width: 5), | |
GestureDetector( | |
onTap: () { | |
onChange?.call(ToggleButtonYesNoState.no); | |
}, | |
child: Expanded( | |
child: Container( | |
color: state == ToggleButtonYesNoState.no ? Colors.green : Colors.white, | |
child: Text( | |
'NÃO', | |
style: TextStyle(color: state == ToggleButtonYesNoState.no ? Colors.white : Colors.black), | |
), | |
), | |
), | |
), | |
], | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment