Flutter 如何在iPad上使用Navigation.of.push时修复侧栏

Flutter 如何在iPad上使用Navigation.of.push时修复侧栏,flutter,navigation,Flutter,Navigation,对不起,我的英语不好 问题 我目前正在为iPad开发一个带有颤振的应用程序。 它只在iPad上使用,不在iPhone或Android上使用 我希望始终显示边栏,其中项目的排列方式与底部导航栏类似,但当使用Navigator.of.push时,带有边栏的移动屏幕将消失 我想做什么 我想在侧边栏仍然显示在Twitter for iPad或Settings app for iPad的情况下进行转换,但如果有人知道如何操作,请告诉我 我如何才能将ios后退按钮设置为仅在右侧屏幕上,如下图所示的iPa

对不起,我的英语不好

问题 我目前正在为iPad开发一个带有颤振的应用程序。 它只在iPad上使用,不在iPhone或Android上使用

我希望始终显示边栏,其中项目的排列方式与底部导航栏类似,但当使用
Navigator.of.push
时,带有边栏的移动屏幕将消失

我想做什么 我想在侧边栏仍然显示在Twitter for iPad或Settings app for iPad的情况下进行转换,但如果有人知道如何操作,请告诉我

我如何才能将ios后退按钮设置为仅在右侧屏幕上,如下图所示的iPad设置应用程序

代码 lib/main.dart

导入“包装:颤振/材料.省道”;
导入“package:health_check/ui/master_detail_container.dart”;
void main()=>runApp(MyAppScreen());
类MyAppScreen扩展了StatefulWidget{
@凌驾
_MyAppScreenState createState()=>\u MyAppScreenState();
}
类_MyAppScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:MasterDetailContainer(),
);
}
}
lib/ui/master\u detail\u container.dart

导入“包装:颤振/材料.省道”;
导入“package:health_check/ui/item.dart”;
导入“package:health_check/ui/item_details.dart”;
导入“package:health_check/ui/item_listing.dart”;
类MasterDetailContainer扩展StatefulWidget{
@凌驾
_ItemMasterDetailContainerState createState()=>
_ItemMasterDetailContainerState();
}
类_ItemMasterDetailContainerState扩展状态{
项目_selectedItem;
小部件_侧边栏(){
回程灵活(
弹性:1,
儿童:材料(
标高:4.0,
子:项目列表(
itemSelectedCallback:(项目){
设置状态(){
_选择editem=项目;
});
},
selectedItem:\u selectedItem,
),
),
);
}
小部件_itemContent(){
回程灵活(
弹性:3,
孩子:详细信息(
项目:\ u selectedItem,
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:世界其他地区(
儿童:[
_边栏(),
_itemContent(),
],
),
);
}
}
lib/ui/item_listing.dart

导入“包装:颤振/材料.省道”;
导入“package:health_check/ui/item.dart”;
导入“package:health_check/ui/item_details.dart”;
类ItemListing扩展了无状态小部件{
项目清单({
@需要此.itemSelectedCallback,
这个。选择编辑,
});
最终值更改项SelectedCallback;
最后一项选择编辑项;
@凌驾
小部件构建(构建上下文){
//返回
返回列表视图(
子项:items.map((item){
返回列表块(
标题:文本(项目名称),
onTap:()=>itemSelectedCallback(项目),
选中:selectedItem==项,
);
}).toList(),
);
}
}
lib/ui/item_details.dart

导入“包装:颤振/材料.省道”;
导入“package:health_check/ui/item.dart”;
导入“package:health_check/ui/item1_screen.dart”;
导入“package:meta/meta.dart”;
类ItemDetails扩展了无状态小部件{
项目详情({
@需要此项,
});
最后项目;
@凌驾
小部件构建(构建上下文){
final TextTheme TextTheme=Theme.of(context).TextTheme;
最终小部件内容=列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
子项:文本(“按钮”),
颜色:颜色。橙色,
textColor:Colors.white,
已按下:(){
of(context,rootNavigator:true).push(
MaterialPackageRoute(生成器:(上下文)=>Item1Screen());
},
),
正文(
项目?标题??“未选择项目!”,
风格:textTheme.headline,
),
正文(
项目?.副标题??“请选择左边的一个。”,
样式:textTheme.subhead,
),
],
);
返回脚手架(
appBar:appBar(
标题:文本(“Appbar”),
),
主体:中心(子:内容),
);
}
}
lib/ui/item1\u screen.dart

导入“包装:颤振/材料.省道”;
类Item1Screen扩展了无状态小部件{
项目1屏幕();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“项目1详细信息”),
),
正文:中心()
);
}
}
lib/ui/item.dart

import'package:meta/meta.dart';
类项目{
项目({
@需要这个标题,
@需要这个。副标题,
});
最后的字符串标题;
最后一串字幕;
}
最终清单项目=[
项目(
标题:“项目1”,
副标题:“这是第一项。”,
),
项目(
标题:“项目2”,
副标题:“这是第二项。”,
),
项目(
标题:“项目3”,
副标题:“这是第三项。”,
),
];