Flutter onChanged does not get called for any widget
I have implemented RadioButtons in my Flutter Project and the onChanged for those RadioButtons does not get Called. I tried the same thing with TextField and CheckBox which didn't work either
main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Different Widgets",
debugShowCheckedModeBanner: false,
home: _showRadioButton());
}
List<Widget> makeRadios() {
int _selected = 0;
void onChanged(int value) {
setState(() {
_selected = value;
});
}
List<Widget> list = List<Widget>();
for (int i = 0; i < 3; i++) {
list.add(Row(
children: <Widget>[
Text("Radio"),
Radio(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
})
],
));
}
for (int i = 0; i < 3; i++) {
list.add(RadioListTile(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
},
title: Text("title"),
activeColor: Colors.red,
secondary: Icon(Icons.access_alarm),
subtitle: Text("Gender"),
));
}
return list;
}
Widget _showRadioButton() {
return Scaffold(
appBar: AppBar(
title: Text("Hi"),
),
body: Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children:
makeRadios()
),
),
),
);
}
I don't get it why the onChanged of the radio button is not being called?
The onChanged for TextField and checkbox is also not working.
radio-button
add a comment |
I have implemented RadioButtons in my Flutter Project and the onChanged for those RadioButtons does not get Called. I tried the same thing with TextField and CheckBox which didn't work either
main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Different Widgets",
debugShowCheckedModeBanner: false,
home: _showRadioButton());
}
List<Widget> makeRadios() {
int _selected = 0;
void onChanged(int value) {
setState(() {
_selected = value;
});
}
List<Widget> list = List<Widget>();
for (int i = 0; i < 3; i++) {
list.add(Row(
children: <Widget>[
Text("Radio"),
Radio(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
})
],
));
}
for (int i = 0; i < 3; i++) {
list.add(RadioListTile(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
},
title: Text("title"),
activeColor: Colors.red,
secondary: Icon(Icons.access_alarm),
subtitle: Text("Gender"),
));
}
return list;
}
Widget _showRadioButton() {
return Scaffold(
appBar: AppBar(
title: Text("Hi"),
),
body: Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children:
makeRadios()
),
),
),
);
}
I don't get it why the onChanged of the radio button is not being called?
The onChanged for TextField and checkbox is also not working.
radio-button
I guess it'ssetStatethat's not working. Try moving everything you pass tobody:ofScaffoldinto a custom widget, or at least themakeRadiospart.
– Günter Zöchbauer
Nov 27 '18 at 5:49
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
1
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14
add a comment |
I have implemented RadioButtons in my Flutter Project and the onChanged for those RadioButtons does not get Called. I tried the same thing with TextField and CheckBox which didn't work either
main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Different Widgets",
debugShowCheckedModeBanner: false,
home: _showRadioButton());
}
List<Widget> makeRadios() {
int _selected = 0;
void onChanged(int value) {
setState(() {
_selected = value;
});
}
List<Widget> list = List<Widget>();
for (int i = 0; i < 3; i++) {
list.add(Row(
children: <Widget>[
Text("Radio"),
Radio(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
})
],
));
}
for (int i = 0; i < 3; i++) {
list.add(RadioListTile(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
},
title: Text("title"),
activeColor: Colors.red,
secondary: Icon(Icons.access_alarm),
subtitle: Text("Gender"),
));
}
return list;
}
Widget _showRadioButton() {
return Scaffold(
appBar: AppBar(
title: Text("Hi"),
),
body: Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children:
makeRadios()
),
),
),
);
}
I don't get it why the onChanged of the radio button is not being called?
The onChanged for TextField and checkbox is also not working.
radio-button
I have implemented RadioButtons in my Flutter Project and the onChanged for those RadioButtons does not get Called. I tried the same thing with TextField and CheckBox which didn't work either
main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Different Widgets",
debugShowCheckedModeBanner: false,
home: _showRadioButton());
}
List<Widget> makeRadios() {
int _selected = 0;
void onChanged(int value) {
setState(() {
_selected = value;
});
}
List<Widget> list = List<Widget>();
for (int i = 0; i < 3; i++) {
list.add(Row(
children: <Widget>[
Text("Radio"),
Radio(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
})
],
));
}
for (int i = 0; i < 3; i++) {
list.add(RadioListTile(
value: i,
groupValue: _selected,
onChanged: (int value) {
onChanged(value);
},
title: Text("title"),
activeColor: Colors.red,
secondary: Icon(Icons.access_alarm),
subtitle: Text("Gender"),
));
}
return list;
}
Widget _showRadioButton() {
return Scaffold(
appBar: AppBar(
title: Text("Hi"),
),
body: Container(
padding: EdgeInsets.all(10.0),
child: Center(
child: Column(
children:
makeRadios()
),
),
),
);
}
I don't get it why the onChanged of the radio button is not being called?
The onChanged for TextField and checkbox is also not working.
radio-button
radio-button
edited Dec 7 '18 at 20:24
halfer
14.6k758112
14.6k758112
asked Nov 27 '18 at 3:19
NudgeNudge
292319
292319
I guess it'ssetStatethat's not working. Try moving everything you pass tobody:ofScaffoldinto a custom widget, or at least themakeRadiospart.
– Günter Zöchbauer
Nov 27 '18 at 5:49
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
1
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14
add a comment |
I guess it'ssetStatethat's not working. Try moving everything you pass tobody:ofScaffoldinto a custom widget, or at least themakeRadiospart.
– Günter Zöchbauer
Nov 27 '18 at 5:49
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
1
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14
I guess it's
setState that's not working. Try moving everything you pass to body: of Scaffold into a custom widget, or at least the makeRadios part.– Günter Zöchbauer
Nov 27 '18 at 5:49
I guess it's
setState that's not working. Try moving everything you pass to body: of Scaffold into a custom widget, or at least the makeRadios part.– Günter Zöchbauer
Nov 27 '18 at 5:49
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
1
1
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14
add a comment |
1 Answer
1
active
oldest
votes
The following solution worked for me
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
int _selected = 0;
void onChanged(int value) {
setState((){
_selected = value;
});
print('Value = $value');
}
List<Widget> makeRadios() {
List<Widget> list = new List<Widget>();
for(int i = 0; i < 3; i++) {
list.add( new Row(
children: <Widget>[
new Text('Radio $i'),
new Radio(value: i, groupValue: _selected, onChanged: (int value){onChanged(value);})
],
));
}
for(int i = 0; i < 3; i++) {
list.add(new RadioListTile(
value: i,
title: new Text('Radio $i'),
groupValue: _selected,
onChanged: (int value){onChanged(value);},
activeColor: Colors.red,
secondary: new Icon(Icons.home),
subtitle: new Text('Sub Title here'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Radio Demo'),
),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Center(
child: new Column(
children: makeRadios(),
),
),
),
);
}
}
I am still confused why the solution mentioned in the question did not work
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53492236%2fflutter-onchanged-does-not-get-called-for-any-widget%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The following solution worked for me
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
int _selected = 0;
void onChanged(int value) {
setState((){
_selected = value;
});
print('Value = $value');
}
List<Widget> makeRadios() {
List<Widget> list = new List<Widget>();
for(int i = 0; i < 3; i++) {
list.add( new Row(
children: <Widget>[
new Text('Radio $i'),
new Radio(value: i, groupValue: _selected, onChanged: (int value){onChanged(value);})
],
));
}
for(int i = 0; i < 3; i++) {
list.add(new RadioListTile(
value: i,
title: new Text('Radio $i'),
groupValue: _selected,
onChanged: (int value){onChanged(value);},
activeColor: Colors.red,
secondary: new Icon(Icons.home),
subtitle: new Text('Sub Title here'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Radio Demo'),
),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Center(
child: new Column(
children: makeRadios(),
),
),
),
);
}
}
I am still confused why the solution mentioned in the question did not work
add a comment |
The following solution worked for me
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
int _selected = 0;
void onChanged(int value) {
setState((){
_selected = value;
});
print('Value = $value');
}
List<Widget> makeRadios() {
List<Widget> list = new List<Widget>();
for(int i = 0; i < 3; i++) {
list.add( new Row(
children: <Widget>[
new Text('Radio $i'),
new Radio(value: i, groupValue: _selected, onChanged: (int value){onChanged(value);})
],
));
}
for(int i = 0; i < 3; i++) {
list.add(new RadioListTile(
value: i,
title: new Text('Radio $i'),
groupValue: _selected,
onChanged: (int value){onChanged(value);},
activeColor: Colors.red,
secondary: new Icon(Icons.home),
subtitle: new Text('Sub Title here'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Radio Demo'),
),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Center(
child: new Column(
children: makeRadios(),
),
),
),
);
}
}
I am still confused why the solution mentioned in the question did not work
add a comment |
The following solution worked for me
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
int _selected = 0;
void onChanged(int value) {
setState((){
_selected = value;
});
print('Value = $value');
}
List<Widget> makeRadios() {
List<Widget> list = new List<Widget>();
for(int i = 0; i < 3; i++) {
list.add( new Row(
children: <Widget>[
new Text('Radio $i'),
new Radio(value: i, groupValue: _selected, onChanged: (int value){onChanged(value);})
],
));
}
for(int i = 0; i < 3; i++) {
list.add(new RadioListTile(
value: i,
title: new Text('Radio $i'),
groupValue: _selected,
onChanged: (int value){onChanged(value);},
activeColor: Colors.red,
secondary: new Icon(Icons.home),
subtitle: new Text('Sub Title here'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Radio Demo'),
),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Center(
child: new Column(
children: makeRadios(),
),
),
),
);
}
}
I am still confused why the solution mentioned in the question did not work
The following solution worked for me
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
int _selected = 0;
void onChanged(int value) {
setState((){
_selected = value;
});
print('Value = $value');
}
List<Widget> makeRadios() {
List<Widget> list = new List<Widget>();
for(int i = 0; i < 3; i++) {
list.add( new Row(
children: <Widget>[
new Text('Radio $i'),
new Radio(value: i, groupValue: _selected, onChanged: (int value){onChanged(value);})
],
));
}
for(int i = 0; i < 3; i++) {
list.add(new RadioListTile(
value: i,
title: new Text('Radio $i'),
groupValue: _selected,
onChanged: (int value){onChanged(value);},
activeColor: Colors.red,
secondary: new Icon(Icons.home),
subtitle: new Text('Sub Title here'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Radio Demo'),
),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Center(
child: new Column(
children: makeRadios(),
),
),
),
);
}
}
I am still confused why the solution mentioned in the question did not work
answered Nov 27 '18 at 10:55
NudgeNudge
292319
292319
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53492236%2fflutter-onchanged-does-not-get-called-for-any-widget%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I guess it's
setStatethat's not working. Try moving everything you pass tobody:ofScaffoldinto a custom widget, or at least themakeRadiospart.– Günter Zöchbauer
Nov 27 '18 at 5:49
@GünterZöchbauer will try and let you know
– Nudge
Nov 27 '18 at 6:52
1
I’m not sure how setState works internally but should your _selected declaration be at the class level?
– Chris Reynolds
Nov 27 '18 at 8:14