Я хочу открыть и закрыть ящик программно, когда нажимаю на иконку. Я пытаюсь использовать ключи, но мне не очень везет. Я нашел эту статью - Флаттер: Как открыть Drawer программно , но у меня возникли проблемы.
У меня есть столбец значков (см. Скриншот), который я включаю в один файл, а мой ящик - в другой, оба из которых, очевидно, включены в третий (это полноэкранная карта Google). Я смотрю на использование глобального ключа, но я не уверен, куда все положить.
На моей странице карты у меня есть
class _TheMapState extends State<TheMap> with WidgetsBindingObserver {
GlobalKey<ScaffoldState> _drawerKey = GlobalKey();
...
...
Когда я пытаюсь добавить ключ на странице своего ящика, он не не распознаю, поэтому я добавляю строку GlobalKey на страницу своего ящика. Я также должен сделать это со своей страницей параметров значков, иначе приложение не будет работать из-за ошибок. Когда я это делаю, ошибок нет, но когда я нажимаю кнопку, ничего не происходит.
Здесь я добавил ключ в ящик.
Widget mapDrawer() {
return Drawer(
key: _drawerKey,
...
...
Вот мой код значка , который находится в отдельном файле.
Widget _buildShowHideDrawerIcon() {
return Container(
child: Opacity(
opacity: 0.60,
child: Container(
padding: EdgeInsets.all(7.0),
decoration: BoxDecoration(
color: Colors.white,
//border: Border.all(color: Colors.black12, width: 1.0),
boxShadow: [
BoxShadow(
color: Colors.black,
offset: Offset(0.0, 0.0),
blurRadius: 3.0,
),
],
),
child: InkWell(
onTap: () {
print("SHOW/HIDE DRAWER ICON PRESSED");
setState(() {
_drawerKey.currentState.openDrawer();
});
},
child: Icon(
Icons.swap_horiz,
color: Colors.black87,
size: 24.0,
semanticLabel: 'Show ,or hide sliding drawer',
),
),
),
),
);
}
Буду признателен за любую помощь в этом.