如何访问 Statefulwidget 中传递的值?
How to access passed value in the Statefulwidget?
我将 String
从另一个 StatefulWidget
传递到下面的 CardItem StatefulWidget
,然后从这里将 String
传递到 _CardItemState
,如图所示在下面的代码中。
但是应该从 _CardItemState(String itemTitle);
访问这个 String
传递的方式
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 " + );
}
}
您可以通过 widget.itemTitle
访问它。对于你的情况,你可以这样称呼它:
printItem(){
print("itemTitle is ${widget.itemTitle}");
}
void initState(){
printItem();
super.initState();
}
您也不需要在状态构造函数中传递字符串。删除这个:
_CardItemState(String itemTitle);
最好的方法是使用
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";
}
}
解决此问题的方法是在构造函数中传递数据,如下所示,但建议遵循上述方法。
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";
}
}
简单!使用
获取它
widget.itemTitle
class CardItem extends StatefulWidget {
String itemTitle;
CardItem({@required this.itemTitle});
@override
_CardItemState createState() => _CardItemState(itemTitle);
}
class _CardItemState extends State<CardItem> {
String itemTitle; // - 1
_CardItemState(this.itemTitle); // - 2
void initState(){
itemTitle = widget.itemTitle; // - 3;
print("INiatialize");
print("itemTitle is " + itemTitle ); // - 4
print("itemTitle is " + widget.itemTitle ); // same as - 4
}
}
我将 String
从另一个 StatefulWidget
传递到下面的 CardItem StatefulWidget
,然后从这里将 String
传递到 _CardItemState
,如图所示在下面的代码中。
但是应该从 _CardItemState(String itemTitle);
String
传递的方式
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 " + );
}
}
您可以通过 widget.itemTitle
访问它。对于你的情况,你可以这样称呼它:
printItem(){
print("itemTitle is ${widget.itemTitle}");
}
void initState(){
printItem();
super.initState();
}
您也不需要在状态构造函数中传递字符串。删除这个:
_CardItemState(String itemTitle);
最好的方法是使用
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";
}
}
解决此问题的方法是在构造函数中传递数据,如下所示,但建议遵循上述方法。
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";
}
}
简单!使用
获取它widget.itemTitle
class CardItem extends StatefulWidget {
String itemTitle;
CardItem({@required this.itemTitle});
@override
_CardItemState createState() => _CardItemState(itemTitle);
}
class _CardItemState extends State<CardItem> {
String itemTitle; // - 1
_CardItemState(this.itemTitle); // - 2
void initState(){
itemTitle = widget.itemTitle; // - 3;
print("INiatialize");
print("itemTitle is " + itemTitle ); // - 4
print("itemTitle is " + widget.itemTitle ); // same as - 4
}
}