Я хочу программно открывать и закрывать ящик, когда нажимаю на значок. Я пытаюсь использовать ключи, но мне не очень везет. Я нашел эту статью - Flutter: как программно открыть ящик, но я возникли проблемы.
У меня есть столбец значков (см. Снимок экрана), который я включаю в один файл, а мой ящик - в другой, оба из которых, очевидно, включены в третий (это полноэкранная карта 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',
),
),
),
),
);
}
Буду признателен за любую помощь в этом.