在不使用onPressed的情况下浏览页面后是否可以打开bottomSheet?
当前,我添加为在bottomSheet
事件上打开onPressed
scaffoldKey.currentState
.showBottomSheet((context) => Container(
height: 100,
color: Colors.red,
)),
我不确定您是否已经尝试过此操作,但是可以定义一个有状态的小部件并添加显示bottomSheet的功能,下面添加了一个示例波纹管,
void _modalBottomSheetMenu() {
WidgetsBinding.instance.addPostFrameCallback((_) async {
await showModalBottomSheet(
context: context,
builder: (builder) {
return new Container(
height: 350.0,
color:
Colors.transparent, //could change this to Color(0xFF737373),
//so you don't have to change MaterialApp canvasColor
child: new Container(
decoration: new BoxDecoration(
color: Colors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(10.0),
topRight: const Radius.circular(10.0))),
child: new Center(
child: new Text("This is a modal sheet"),
)),
);
});
});
}
这将等待绘制第一帧,然后显示bottomSheet,因此您可以从initState进行调用
@@ override,在初始化状态下,您将调用上述函数。
@override
void initState() {
super.initState();
_modalBottomSheetMenu();
}
您不能在initState()
上添加它,因为那时您还没有上下文。
最简单的方法是在开头添加变量didOpenModalBottomSheet = false
然后在构建中添加类似的内容
@override
Widget build(BuildContext context) {
if(!didOpenModalBottomSheet){
didOpenModalBottomSheet = true;
_modalBottomSheetMenu();
}
return ...
您也可以使用此库:https://pub.dev/packages/need_resume特别是如果您来自Android。但是我还没有尝试过。