Flutter 颤振:从无状态小部件到带MaterialPage路由的有状态小部件
我有一个作为Flutter 颤振:从无状态小部件到带MaterialPage路由的有状态小部件,flutter,dart,Flutter,Dart,我有一个作为无状态小部件的详细页面。我的Feed.dart中有一个列表视图。单击Listview元素,即可进入详细信息页面。现在我想在有状态中转换无状态的细节,但是在我的feed MaterialPageRoute中,现在的错误是没有定义命名参数shop。如何修复错误 无状态细节 class Detail extends StatelessWidget { final Shop shop; Detail({ this.shop }); var top = 0.0;
无状态小部件的详细页面
。我的Feed.dart中有一个列表视图
。单击Listview元素,即可进入详细信息页面。现在我想在有状态中转换无状态的细节,但是在我的feed MaterialPageRoute中,现在的错误是没有定义命名参数shop。如何修复错误
无状态细节
class Detail extends StatelessWidget {
final Shop shop;
Detail({ this.shop });
var top = 0.0;
int segmentedControlGroupValue = 0;
final Map<int, Widget> myTabs = const <int, Widget>{
0: Text("Item 1"),
1: Text("Item 2")
};
它说第一家商店不再有详细的定义。因此有一个错误。当它是一个无状态的小部件时,它仍然可以工作。你能告诉我错误在哪里吗?你应该把构造函数放在
细节
类而不是\u细节状态
:
class Detail extends StatefulWidget {
final Shop shop;
Detail({ this.shop });
@override
_DetailState createState() => _DetailState(Shop());
}
class _DetailState extends State<Detail> {
var top = 0.0;
Shop shopValue;
@override
void initState() {
super.initState();
// access the property 'shop' using 'widget.shop'
shopValue = widget.shop
}
}
类详细信息扩展StatefulWidget{
最终车间;
细节({this.shop});
@凌驾
_DetailState createState()=>\u DetailState(Shop());
}
类_DetailState扩展了状态{
var-top=0.0;
商店购物价值;
@凌驾
void initState(){
super.initState();
//使用“widget.shop”访问属性“shop”
shopValue=widget.shop
}
}
您应该将构造函数放在详细信息
类中而不是\u DetailState
:
class Detail extends StatefulWidget {
final Shop shop;
Detail({ this.shop });
@override
_DetailState createState() => _DetailState(Shop());
}
class _DetailState extends State<Detail> {
var top = 0.0;
Shop shopValue;
@override
void initState() {
super.initState();
// access the property 'shop' using 'widget.shop'
shopValue = widget.shop
}
}
类详细信息扩展StatefulWidget{
最终车间;
细节({this.shop});
@凌驾
_DetailState createState()=>\u DetailState(Shop());
}
类_DetailState扩展了状态{
var-top=0.0;
商店购物价值;
@凌驾
void initState(){
super.initState();
//使用“widget.shop”访问属性“shop”
shopValue=widget.shop
}
}
阿肖克的解决方案是正确的。在您的提要需要上,onTap需要更改
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Detail(shop: widget[index])),
);
},
阿肖克的解决方案是正确的。在您的提要需要上,onTap需要更改
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Detail(shop: widget[index])),
);
},
我不能那样改变它。widget.shop出现此错误:在初始值设定项中只能访问静态成员。以及在州内的商店(Shop());获取此错误->位置参数过多:应为0,但找到1。试着删除额外的参数。我不能这样改变它。widget.shop出现此错误:在初始值设定项中只能访问静态成员。以及在州内的商店(Shop());获取此错误->位置参数过多:应为0,但找到1。尝试删除额外的参数。