Flutter onChanged does not get called for any widget












0















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.










share|improve this question

























  • 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






  • 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
















0















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.










share|improve this question

























  • 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






  • 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














0












0








0








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.










share|improve this question
















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 flutter onchange






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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'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






  • 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











  • @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












1 Answer
1






active

oldest

votes


















0














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






share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    0














    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






    share|improve this answer




























      0














      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






      share|improve this answer


























        0












        0








        0







        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






        share|improve this answer













        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







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 27 '18 at 10:55









        NudgeNudge

        292319




        292319
































            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Futebolista

            Lallio

            Jornalista