使用脚手架体内的按钮颤振打开抽屉
flutter opening a drawer using a button inside a scaffold body
我有什么
一个带有 onpress 打开抽屉的自定义按钮,我的构建片段:(inside MyClassState)
Widget build(BuildContext context) => Scaffold(
key: _key,
body: Container(
child: Column(
children: [
Row(children: [
ElevatedButton(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Icon(
Icons.settings,
size: 38,
color: Colors.white,
),
),
onPressed: () => _key.currentState?.openEndDrawer(),
),
]),]),))
使用方法globalkey _key(阅读一些解决方案后)
Class MyClassState extends State<MyClass> {
GlobalKey<ScaffoldState> _key = GlobalKey();
...
}
如我所料
抽屉在 press/tap
打开
当前行为结果
点击没有任何反应,但我可以使用滑动手势打开抽屉。
在这种情况下我做错了什么?
您没有在脚手架中声明 endDrawer
,这是您更新后的代码
Widget build(BuildContext context) => Scaffold(
key: _key,
endDrawer: Drawer( /// this is missing in your code
child: Container(
width: 200,
color: Colors.red,
),
),
body: Container(
child: Column(
children: [
Row(children: [
ElevatedButton(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Icon(
Icons.settings,
size: 38,
color: Colors.white,
),
),
onPressed: () => _key.currentState?.openEndDrawer(),
),
]),]),))
我有什么 一个带有 onpress 打开抽屉的自定义按钮,我的构建片段:(inside MyClassState)
Widget build(BuildContext context) => Scaffold(
key: _key,
body: Container(
child: Column(
children: [
Row(children: [
ElevatedButton(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Icon(
Icons.settings,
size: 38,
color: Colors.white,
),
),
onPressed: () => _key.currentState?.openEndDrawer(),
),
]),]),))
使用方法globalkey _key(阅读一些解决方案后
Class MyClassState extends State<MyClass> {
GlobalKey<ScaffoldState> _key = GlobalKey();
...
}
如我所料
抽屉在 press/tap
打开当前行为结果
点击没有任何反应,但我可以使用滑动手势打开抽屉。
在这种情况下我做错了什么?
您没有在脚手架中声明 endDrawer
,这是您更新后的代码
Widget build(BuildContext context) => Scaffold(
key: _key,
endDrawer: Drawer( /// this is missing in your code
child: Container(
width: 200,
color: Colors.red,
),
),
body: Container(
child: Column(
children: [
Row(children: [
ElevatedButton(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Icon(
Icons.settings,
size: 38,
color: Colors.white,
),
),
onPressed: () => _key.currentState?.openEndDrawer(),
),
]),]),))