Search code examples
flutterstatefulwidget

How to access passed value in the Statefulwidget?


I am passing an String from another StatefulWidget to the below CardItem StatefulWidget and then from here the String is passed to the _CardItemState as shown in the code below. But how this String passed should be accessed from _CardItemState(String itemTitle);

class CardItem extends StatefulWidget {


  String itemTitle;
  CardItem({@required this.itemTitle});
  @override
  _CardItemState createState() => _CardItemState(itemTitle);
}

class _CardItemState extends State<CardItem> {

  _CardItemState(String itemTitle);


 void initState(){
   print("INiatialize");
   print("itemTitle is  "  +  );
 }

}

Solution

  • Best way to do this is to use

    widget.fieldName

        class CardItem extends StatefulWidget {
          String itemTitle;
          CardItem({@required this.itemTitle});
          @override
          _CardItemState createState() => _CardItemState(itemTitle:itemTitle);
        }
        
        class _CardItemState extends State<CardItem> {
        
          String myItemTitle;
          @override
          void initState(){
    
           super.initState();
           myItemTitle=widget.itemTitle;
           print("INiatialize");
           print("itemTitle is  $myItemTitle";
         
         }
        
        }
    

    otherway round to this problem is to pass data in constructor as shown below, but the above method is recommended to be followed.

     class CardItem extends StatefulWidget {
    
    
      String itemTitle;
      CardItem({@required this.itemTitle});
      @override
      _CardItemState createState() => _CardItemState(itemTitle:itemTitle);
    }
    
    class _CardItemState extends State<CardItem> {
    
       String itemTitle;
      _CardItemState({this.itemTitle});
    
    
     void initState(){
       print("INiatialize");
       print("itemTitle is  $itemTitle";
     }
    
    }