Flutter: how do I either call a function inside a state class OR access a state class attribute?











up vote
0
down vote

favorite












From the StatefulWidget class, I want to call a function within the State class as such:



class Parent extends StatefulWidget{

// access _ParentState: iWantToAccessThis
// OR
// run from _ParentState: iWantToRunThis

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
List<Object> iWantToAccessThis;
void iWantToRunThis(){
// do something
}
...
}


UPDATE: found a work around by making my list a static list. Since there is going to always be one version of the list, this will work. However, I'd still like a proper answer for running functions within a state or accessing attributes that aren't lists or static (though I'm leaning towards it being impossible to access non-static attributes).



class Parent extends StatefulWidget{

static void _getList(){
_ParentState._iWantToAccessThis;
}

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
static List<Object> _iWantToAccessThis;
List<Object> get iWantToAccessThis => _iWantToAccessThis;
...
}









share|improve this question




















  • 2




    That is purely impossible. The widget part cannot access its state
    – Rémi Rousselet
    Nov 12 at 4:34






  • 1




    Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
    – shaddy
    Nov 12 at 5:51















up vote
0
down vote

favorite












From the StatefulWidget class, I want to call a function within the State class as such:



class Parent extends StatefulWidget{

// access _ParentState: iWantToAccessThis
// OR
// run from _ParentState: iWantToRunThis

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
List<Object> iWantToAccessThis;
void iWantToRunThis(){
// do something
}
...
}


UPDATE: found a work around by making my list a static list. Since there is going to always be one version of the list, this will work. However, I'd still like a proper answer for running functions within a state or accessing attributes that aren't lists or static (though I'm leaning towards it being impossible to access non-static attributes).



class Parent extends StatefulWidget{

static void _getList(){
_ParentState._iWantToAccessThis;
}

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
static List<Object> _iWantToAccessThis;
List<Object> get iWantToAccessThis => _iWantToAccessThis;
...
}









share|improve this question




















  • 2




    That is purely impossible. The widget part cannot access its state
    – Rémi Rousselet
    Nov 12 at 4:34






  • 1




    Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
    – shaddy
    Nov 12 at 5:51













up vote
0
down vote

favorite









up vote
0
down vote

favorite











From the StatefulWidget class, I want to call a function within the State class as such:



class Parent extends StatefulWidget{

// access _ParentState: iWantToAccessThis
// OR
// run from _ParentState: iWantToRunThis

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
List<Object> iWantToAccessThis;
void iWantToRunThis(){
// do something
}
...
}


UPDATE: found a work around by making my list a static list. Since there is going to always be one version of the list, this will work. However, I'd still like a proper answer for running functions within a state or accessing attributes that aren't lists or static (though I'm leaning towards it being impossible to access non-static attributes).



class Parent extends StatefulWidget{

static void _getList(){
_ParentState._iWantToAccessThis;
}

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
static List<Object> _iWantToAccessThis;
List<Object> get iWantToAccessThis => _iWantToAccessThis;
...
}









share|improve this question















From the StatefulWidget class, I want to call a function within the State class as such:



class Parent extends StatefulWidget{

// access _ParentState: iWantToAccessThis
// OR
// run from _ParentState: iWantToRunThis

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
List<Object> iWantToAccessThis;
void iWantToRunThis(){
// do something
}
...
}


UPDATE: found a work around by making my list a static list. Since there is going to always be one version of the list, this will work. However, I'd still like a proper answer for running functions within a state or accessing attributes that aren't lists or static (though I'm leaning towards it being impossible to access non-static attributes).



class Parent extends StatefulWidget{

static void _getList(){
_ParentState._iWantToAccessThis;
}

@override
_ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
static List<Object> _iWantToAccessThis;
List<Object> get iWantToAccessThis => _iWantToAccessThis;
...
}






function flutter state stateful






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 at 4:56

























asked Nov 12 at 4:31









Johnny Boy

865




865








  • 2




    That is purely impossible. The widget part cannot access its state
    – Rémi Rousselet
    Nov 12 at 4:34






  • 1




    Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
    – shaddy
    Nov 12 at 5:51














  • 2




    That is purely impossible. The widget part cannot access its state
    – Rémi Rousselet
    Nov 12 at 4:34






  • 1




    Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
    – shaddy
    Nov 12 at 5:51








2




2




That is purely impossible. The widget part cannot access its state
– Rémi Rousselet
Nov 12 at 4:34




That is purely impossible. The widget part cannot access its state
– Rémi Rousselet
Nov 12 at 4:34




1




1




Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
– shaddy
Nov 12 at 5:51




Can you clarify why you want to do this? If you want to do some initialisation the state class has initState method.
– shaddy
Nov 12 at 5:51












1 Answer
1






active

oldest

votes

















up vote
0
down vote













You can simply do this, but I wouldn't recommend it



class _MyWidget extends StatefulWidget {
State state;
@override
State<StatefulWidget> createState() {
state = _MyWidgetState();
return state;
}
}


I think there can be another ways to solve your problem, then access to state from widget






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',
    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%2f53255987%2fflutter-how-do-i-either-call-a-function-inside-a-state-class-or-access-a-state%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








    up vote
    0
    down vote













    You can simply do this, but I wouldn't recommend it



    class _MyWidget extends StatefulWidget {
    State state;
    @override
    State<StatefulWidget> createState() {
    state = _MyWidgetState();
    return state;
    }
    }


    I think there can be another ways to solve your problem, then access to state from widget






    share|improve this answer

























      up vote
      0
      down vote













      You can simply do this, but I wouldn't recommend it



      class _MyWidget extends StatefulWidget {
      State state;
      @override
      State<StatefulWidget> createState() {
      state = _MyWidgetState();
      return state;
      }
      }


      I think there can be another ways to solve your problem, then access to state from widget






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        You can simply do this, but I wouldn't recommend it



        class _MyWidget extends StatefulWidget {
        State state;
        @override
        State<StatefulWidget> createState() {
        state = _MyWidgetState();
        return state;
        }
        }


        I think there can be another ways to solve your problem, then access to state from widget






        share|improve this answer












        You can simply do this, but I wouldn't recommend it



        class _MyWidget extends StatefulWidget {
        State state;
        @override
        State<StatefulWidget> createState() {
        state = _MyWidgetState();
        return state;
        }
        }


        I think there can be another ways to solve your problem, then access to state from widget







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 12 at 8:07









        Andrey Turkovsky

        1,8351618




        1,8351618






























            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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%2f53255987%2fflutter-how-do-i-either-call-a-function-inside-a-state-class-or-access-a-state%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

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python