在用到 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 函數來顯示。