flutter Scaffold添加ScaffoldStateKey 导致TextField 键盘弹起后马上收回的问题

在用到 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 函数来显示。

 
posted @ 2020-05-11 15:26  Belinda_sl  阅读(1475)  评论(0编辑  收藏  举报