大佬教程收集整理的这篇文章主要介绍了如何在有状态小部件中使用 ObjectKey?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个应用程序,人们可以将菜单添加到主屏幕。从这个菜单人们可以进入新的屏幕,例如,当用户创建“蛋糕”菜单时,新页面正在出现,称为“蛋糕”,用户也可以将蛋糕食谱添加到新屏幕,但人们会添加更多菜单而我不会知道我将如何放置有状态的新页面,以及这个新页面的食谱列表,我只知道,我必须使用密钥,但是如何?,在哪里?
List<Widget> menuExtensionScreens=[];
List<Widget> menuExtensionCards=[Emptymenu(fromWhere: "menuExtension")];
class MenuCard extends StatelessWidget {
MenuCard({this.newMenuname,this.imagePath,});
final newMenuname;
final imagePath;
@overrIDe
Widget build(BuildCo@R_675_10443@t co@R_675_10443@t) {
return padding(
padding: EdgeInsets.only(top:15.0),child: Flatbutton(
onpressed: (){
MenuExtensionScreen menuExtensionScreen=MenuExtensionScreen(menuExtensionname: newMenuName);
menuExtensionScreens.add(menuExtensionScreen);
Navigator.push(co@R_675_10443@t,MaterialPageRoute(builder: (co@R_675_10443@t)=>MenuExtensionScreen(menuExtensionname: newMenuname,)));
},child: Container(
height: 180,wIDth: 180,decoration: Boxdecoration(
border: border.all(style: borderstyle.solID,wIDth: 1),borderRadius: borderRadius.circular(30),color: color((Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(0.5),),child: column(
mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [
SizedBox(height: 10,Container(
decoration: Boxdecoration(
color: colors.white.withOpacity(0.5),borderRadius: borderRadius.circular(90),child: padding(
padding: const EdgeInsets.all(8.0),child: Text(
newMenuname,style: TextStyle(
color: colors.black,FontSize: 20,FontFamily: 'Graduate',FontWeight: FontWeight.bold),Expanded(
child: padding(
padding:EdgeInsets.all(5),child: Image(
image: Assetimage(
imagePath
),],);
}
}
class Emptymenu extends StatelessWidget {
Emptymenu({this.fromWherE});
final String fromWhere;
@overrIDe
Widget build(BuildCo@R_675_10443@t co@R_675_10443@t) {
return padding(
padding: EdgeInsets.only(top:15.0),child: Flatbutton(
onpressed: (){
if(fromWhere=="homeScreen"){
showModalBottomSheet(
co@R_675_10443@t: co@R_675_10443@t,builder: (BuildCo@R_675_10443@t co@R_675_10443@t)=> AddMenuScreen(butto@R_675_10443@t: "Menü Ekle",route:"homeScreen"),);
}
else if(fromWhere=="menuExtension"){
showModalBottomSheet(
co@R_675_10443@t: co@R_675_10443@t,route:"menuExtensionScreen"),);
}
},decoration: Boxdecoration(
borderRadius: borderRadius.circular(30),color: colors.black12.withOpacity(0.1),children: [
Icon(Icons.add_circle_outline_outlined,size: 100,color: colors.grey.shade400,);
}
}
这个有状态的小部件将在用户创建新菜单并按下时创建。创建新菜单时,如何在 MenuExtensionScreen 中使用 MenuCard 小部件请帮助我。
class MenuExtensionScreen extends StatefulWidget {
MenuExtensionScreen({this.menuExtensionname,this.imagePath});
final String imagePath;
final String menuExtensionname;
@overrIDe
_MenuExtensionScreenState createState() => _MenuExtensionScreenState();
}
class _MenuExtensionScreenState extends State<MenuExtensionScreen> {
voID initState(){
super.initState();
if (Widget.menuExtensionname!=null && Widget.imagePath!=null){
Widget newMenu=MenuCard(newMenuname: Widget.menuExtensionname,imagePath: Widget.imagePath);
menuExtensionCards.insert(0,newMenu);
}
}
Widget buildBottomSheet(BuildCo@R_675_10443@t co@R_675_10443@t)=>AddMenuScreen(butto@R_675_10443@t: "Tarif Ekle",route: "menuExtensionScreen",);
@overrIDe
Widget build(BuildCo@R_675_10443@t co@R_675_10443@t) {
return SafeArea(
child: Scaffold(
appbar: Appbar(
automaticallyImplyLeading: false,centertitle: true,title: borderedText(
child:Text(
Widget.menuExtensionname,style: TextStyle(
color: color(0XFFFFFB00),FontSize: 30,FontFamily: "Graduate"
),strokeWIDth: 5,strokecolor: colors.black,elevation: 5,BACkgroundcolor: color(0xFFF2C3D4).withOpacity(1),leading: Iconbutton(
icon: Icon(Icons.arrow_BACk),onpressed: (){
Navigator.pop(co@R_675_10443@t);
},iconSize: 40,color: color(0xFFA2000B),actions: [
CircleAvatar(
radius: 27,BACkgroundcolor: colors.transparent,BACkgroundImage: Assetimage("images/cuttedlogo.PNG"),)
],body: Container(
decoration: Boxdecoration(
image: decorationImage(
image: Assetimage("images/logoBGopacity.png"),fit: BoxFit.cover,child: column(
crossAxisAlignment: CrossAxisAlignment.stretch,children: [
Expanded(
child: GrIDVIEw.count(
crossAxisCount: 2,children:menuExtensionCards,column(
mainAxisAlignment: MainAxisAlignment.end,crossAxisAlignment: CrossAxisAlignment.stretch,children: [
padding(
padding: EdgeInsets.all(10),child: Container(
decoration: Boxdecoration(
border: border.all(style: borderstyle.solID),color: kcolortheme7,borderRadius: borderRadius.circular(40),child: Flatbutton(
onpressed: (){
showModalBottomSheet(
co@R_675_10443@t: co@R_675_10443@t,builder: (BuildCo@R_675_10443@t co@R_675_10443@t)=> AddMenuScreen(butto@R_675_10443@t: "Tarif Ekle",route:"menuExtension"),);
},child: borderedText(
strokeWIDth: 5,child:Text("Tarif Ekle",style: TextStyle(
color: colors.white,FontFamily:'Graduate',FontSize:30,)
],);
}
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何在有状态小部件中使用 ObjectKey?全部内容,希望文章能够帮你解决如何在有状态小部件中使用 ObjectKey?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。