UTKARSH Sharma
UTKARSH Sharma

Reputation: 836

Unable to define object inside a statefulwidget

I am trying to store data in an object reference right now it's just a simple class but letter i am replacing it with a singleton class kindly explain why I am not able to initialize the object just above build method.

class MyStatefulWidget1State extends State<MyStatefulWidget1> {

  final TextEditingController titleController = TextEditingController();

  Data().value = "dscs";  **//IF i define here it will produce error**

  @override
  Widget build(BuildContext context) {
    Data().value = "dscs";    **// bu if i define here it will work just fine** 
    return TextField(controller: titleController);
  }
}

class Data {
  String value;
}

Upvotes: 1

Views: 170

Answers (2)

Viren V Varasadiya
Viren V Varasadiya

Reputation: 27137

In any type of class we can only create variable and method while you are trying to access objects member variable(value) that't why it is giving error.

While build method is also one type of method, so you can access any class or object member variable too. That's why it is working over there.

If you create simple object Data class in MyStatefulWidget1State state then then try to access it's member variable then also you will get same error.

Something like following.

Data c = Data();
c.value = 'f';

But we can do it in any method, so it will work in build method.

Upvotes: 1

Abhishek
Abhishek

Reputation: 412

You can use initState() for this purpose.

@override
void initState() {
  super.initState();
  Data().value = "dscs";
}

Upvotes: 1

Related Questions