Расширяйте / уменьшайте при использовании бокового меню - PullRequest
0 голосов
/ 17 февраля 2020

Я создал боковое меню в webApp, которое всегда открывалось. У меня есть кнопка со значком, чтобы скрыть / показать это меню. Я хочу, чтобы при открытии меню первая страница должна была быть уменьшена, после того как скрыть меню, чтобы развернуть эту страницу. В меню будет 5 категорий, которые после нажатия открывают страницу, и каждая страница должна совпадать с первой страницей (развернуть / сжать). Как это сделать? мой код:

class AdminPage extends StatefulWidget {
  @override
  _AdminPage createState() => _AdminPage();
}

class _AdminPage extends State<AdminPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.deepOrange,
      ),
      body: Stack(
        children: <Widget>[
          FirstPage(),
          SideMenu(),
        ],
      ),
    );
  }
}

боковое меню:

    class SideMenu extends StatefulWidget {
  @override
  _SideMenuState createState() => _SideMenuState();
}
bool isSideBarOpened = true;
final _animationDuration = const Duration(milliseconds: 1000);

class _SideMenuState extends State<SideMenu> {
  @override
  Widget build(BuildContext context) {
    final screenWidth = MediaQuery.of(context).size.width;
    return AnimatedPositioned(
      duration: _animationDuration,
      top: 0,
      bottom: 0,
      left: isSideBarOpened ? 0 : 0,
      right: isSideBarOpened ? 0 : screenWidth - 35,
      child: Row(
        children: <Widget>[
           Flexible(
              child: Container(
                width: 300.0,
                color: Colors.blueGrey,
          ),
           ),
          Align(
            alignment: Alignment(0, -0.9),
            child: Container(
              width: 35,
              height: 100,
              color: Colors.amberAccent,
              child: IconButton(
                icon: Icon(Icons.menu),
                onPressed: () {
                  setState(() {
                    isSideBarOpened = !isSideBarOpened;
                  });
                },
              ),
            ),
          )
        ],
      ),
    );
  }
}
...