К сожалению, вы не можете просто обернуть свой конечный ящик с DrawerController
и получить обратные вызовы, когда он закрыт или открыт, потому что Scaffold делает контроллер ящика для него сам и инкапсулирует его, чтобы вы не могли его изменить.
Единственный другой способ, которым я могу придумать, - это поместить контроллер выдвижного ящика за пределы основного леса или показать его, используя Overlay
, если вы знакомы с ними.
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
Positioned.fill(
child: Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(kToolbarHeight),
child: UserAppBar(),
),
body: PostsPage(),
),
),
Positioned.fill(
child: DrawerController(
child: Drawer(
child: Column(),
),
drawerCallback: (open){
print(open);
},
alignment: DrawerAlignment.end,
),
),
],
),
);
}
}