Изучение различных методов позиционирования нижней части панели приложений во Flutter

В Flutter виджет AppBar обеспечивает единообразный способ отображения панели навигации в верхней части экрана. По умолчанию AppBar располагается вверху, но есть сценарии, в которых вы можете расположить его внизу. В этой статье мы рассмотрим несколько методов достижения этой цели, а также примеры кода для каждого метода. Давайте погрузимся!

Метод 1: свойство BottomNavigationBar Scaffold
Один из способов расположить AppBar внизу — использовать свойство bottomNavigationBarвиджета Scaffold. Вот пример:

Scaffold(
  appBar: AppBar(
    title: Text('My App'),
  ),
  bottomNavigationBar: BottomAppBar(
    child: Container(
      height: 56.0, // Set your desired height
      // Add your content here
    ),
  ),
  body: Container(),
);

Метод 2: собственный виджет AppBar
Другой подход — создать собственный виджет AppBar, который располагается внизу. Вот пример:

class BottomAppBar extends StatelessWidget implements PreferredSizeWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.bottomCenter,
      height: kToolbarHeight,
      child: AppBar(
        title: Text('My App'),
        automaticallyImplyLeading: false,
        elevation: 0.0,
        backgroundColor: Colors.transparent,
      ),
    );
  }
  @override
  Size get preferredSize => Size.fromHeight(kToolbarHeight);
}
// Usage:
Scaffold(
  appBar: BottomAppBar(),
  body: Container(),
);

Метод 3: собственный PreferredSizeWidget
Вы также можете создать собственный PreferredSizeWidget, который расположит AppBar внизу. Вот пример:

class BottomAppBar extends StatelessWidget implements PreferredSizeWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.bottomCenter,
      height: kToolbarHeight,
      child: AppBar(
        title: Text('My App'),
        automaticallyImplyLeading: false,
        elevation: 0.0,
        backgroundColor: Colors.transparent,
      ),
    );
  }
  @override
  Size get preferredSize => Size.fromHeight(kToolbarHeight);
}
// Usage:
Scaffold(
  appBar: AppBar(
    toolbarHeight: kToolbarHeight + MediaQuery.of(context).padding.bottom,
    flexibleSpace: BottomAppBar(),
  ),
  body: Container(),
);

Метод 4: Виджет стека
Используя виджет Stack, вы можете наложить панель приложений в нижней части экрана. Вот пример:

Scaffold(
  body: Stack(
    children: [
      Container(), // Your content goes here
      Align(
        alignment: Alignment.bottomCenter,
        child: AppBar(
          title: Text('My App'),
        ),
      ),
    ],
  ),
);

В этой статье мы рассмотрели несколько способов размещения AppBar внизу во Flutter. Каждый метод предлагает свой подход, что позволяет вам выбрать тот, который лучше всего соответствует вашим требованиям. Используя эти методы, вы можете создавать уникальные и визуально привлекательные интерфейсы для своих приложений Flutter.