Flutter 在集团模式上打开抽屉

Flutter 在集团模式上打开抽屉,flutter,flutter-layout,bloc,Flutter,Flutter Layout,Bloc,经过几天解决这个问题,我不能 我在我的应用程序上实现了简单的blok模式,我想通过按FloatingActionButton或图标打开抽屉。菜单图标,但我的代码是 Scaffold.of(context).openDrawer(); 不工作 我的代码: return Scaffold( body: BlocBuilder<HomeEvent, HomeState>( bloc: _homeBloc, builder: (BuildContext cont

经过几天解决这个问题,我不能

我在我的应用程序上实现了简单的blok模式,我想通过按
FloatingActionButton
图标打开
抽屉
。菜单
图标,但我的代码是

Scaffold.of(context).openDrawer();
不工作

我的代码:

return Scaffold(
  body: BlocBuilder<HomeEvent, HomeState>(
      bloc: _homeBloc,
      builder: (BuildContext context, HomeState state) {
        Scaffold.of(context).openDrawer(); //<---- don't work
        if (state is HandleDrawerMenuClick) {
          _onWidgetDidBuild(() {
            Scaffold.of(context).openDrawer(); //<---- don't work
            _showToast(context); //<---- work fine
          });
        }
        return WillPopScope(
          onWillPop: () {
            customPop(context);
          },
          child: Directionality(
            textDirection: TextDirection.rtl,
            child: Scaffold(
              primary: true,
              appBar: ApplicationToolbar(homeBloc: _homeBloc),
              floatingActionButton: FloatingActionButton(
                child: Icon(Icons.add),
                onPressed: () {
                  Scaffold.of(context).openDrawer(); //<---- don't work
                  _showToast(context); //<---- work fine
                },
              ),
              floatingActionButtonLocation:
              FloatingActionButtonLocation.centerDocked,
              bottomNavigationBar: AppBottomNavigationBar(),
              drawer: AppDrawer(),
              body: _fragments[_currentIndex],
            ),
          ),
        );
      }),
);
HomeState
class:

class HomeEvent extends Equatable{
  HomeEvent([List props = const []]) : super(props);
}

class OnDrawerMenuClicked extends HomeEvent {

  @override
  String toString() => 'OnDrawerMenuClicked clicked';
}

class OnDrawerMenuItemsClicked extends HomeEvent {
  var onItem = 1;

  OnDrawerMenuItemsClicked({this.onItem});

  @override
  String toString() => 'OnDrawerMenuItemsClicked clicked';
}
class HomeState extends Equatable{
  HomeState([List props = const[]]):super(props);
}

class HomeInitial extends HomeState{
  @override
  String toString()=>'HomeInitial';
}
class HandleDrawerMenuClick extends HomeState{
  @override
  String toString()=>'HandleDrawerMenuClick';
}

用块状图案打开抽屉太复杂了。您需要用一个生成器小部件包装
FloatingActionButton
,该小部件将为您打开抽屉提供正确的上下文,并且它将在不需要使用Bloc模式的情况下打开

s使用FAB打开抽屉的简单代码

 return Scaffold(
      appBar:  AppBar(title: Text('Drawer FAB'),),
      drawer: Drawer(child: Text('drawer content'),),
      floatingActionButton: Builder( builder:(context) => 
                          FloatingActionButton(child: Icon(Icons.add), 
                              onPressed: (){ 
                                  Scaffold.of(context).openDrawer();
                              },
                          )),
);

若我在别的班上有appbar怎么能打开抽屉?例如,在分离的appBar中,我的
自动加载
错误的
,我想使用自定义图标并单击打开抽屉的原因,但我并不真正理解这个问题。即使
automaticallyImplyLeading
为false,您仍然可以通过单击按钮打开抽屉是的,我确定可以单击该按钮,但是当我将
automaticallyImplyLeading
设置为false时,抽屉无法打开,因为
automaticallyImplyLeading
导致此情况的原因,如果
true
,这很奇怪。即使设置为false,它也会在我的中打开。请让我再次检查