Skip to content

Instantly share code, notes, and snippets.

@jacobaraujo7
Created April 13, 2022 02:21
Show Gist options
  • Save jacobaraujo7/0370294453986eda84325f37aba77600 to your computer and use it in GitHub Desktop.
Save jacobaraujo7/0370294453986eda84325f37aba77600 to your computer and use it in GitHub Desktop.
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