使用脚手架主体内的按钮打开抽屉

时间:2021-06-09 05:52:33

标签: flutter mobile navigation-drawer

我有什么 一个带有 onpress 打开抽屉的自定义按钮,我的构建片段:(在 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 使用(阅读一些解决方案后here

Class MyClassState extends State<MyClass> {
    GlobalKey<ScaffoldState> _key = GlobalKey();
  ...
}

我所期望的

抽屉在按下/点击时打开

当前行为结果

点击后没有任何反应,但我可以使用滑动手势打开抽屉。

在这种情况下我做错了什么?

1 个答案:

答案 0 :(得分:2)

您没有在脚手架中声明 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(),
), 

]),]),))