在用到 GlobalKey<ScaffoldState>
使用场景
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
return Scaffold(
key: _scaffoldKey
);
_scaffoldKey.currentState.showBottomSheet((BuildContext context) {});
使用_scaffoldKey的目的是 获取到ScaffoldState 对象,调用showBottomSheet,但是如果Scaffold中使用到了TextFiled widget会出现点击输入框键盘弹起后立刻收回的情况,如果不使用key: _scaffoldKey,就不会出现这种情况。
解决方法:
不使用GlobalKey<ScaffoldState>,直接根据Scaffold.of(content) 获取ScaffoldState 调用showBottomSheet
return Scaffold(
);
Scaffold.of(content).showBottomSheet((BuildContext context) {});
显示 snackbar 或者 bottom sheet 的时候,需要使用当前的 BuildContext 参数调用 Scaffold.of 函数来获取 ScaffoldState 对象,然后使用 ScaffoldState.showSnackBar 和 ScaffoldState.showBottomSheet 函数来显示。