Правильно ли иметь вложенный Scaffold во Flutter?
У меня есть PageView на главной странице моего приложения, и я хочу:
- AppBar меняется в зависимости от страницы
- BottomAppBar исправлен
Я придумал два решения:
- Самый сложный: иметь один Scaffold с appBar, body и bottomNavigationBar; используйте PageView's PageController для анимации содержимого AppBar...
- Имейте 2 вложенных скаффолда: основной с body и bottomNavigationBar, а второй на каждой странице PageView с AppBar...
Так что мне было интересно, это работает, но "правильно ли" синтаксически иметь вложенный Scaffold?
Большое спасибо!
2 ответа
Перейдите сюда: https://api.flutter.dev/flutter/material/Scaffold-class.html
Есть раздел "Устранение неполадок", в котором вы найдете следующее:
Вложенные леса
Scaffold был разработан как единственный контейнер верхнего уровня для MaterialApp, и, как правило, нет необходимости вкладывать строительные леса. Например, в пользовательском интерфейсе с вкладками, где bottomNavigationBar - это TabBar, а тело - это TabBarView, у вас может возникнуть соблазн сделать так, чтобы каждая панель вкладок отображала основу с другим названием AppBar. Было бы лучше добавить слушателя к TabController, который обновляет AppBar.
Я думаю так. Scaffold похож на любой другой виджет imo. Он настолько удобен, что предоставляет вам панель приложения, тело и т. Д. Я обычно помещаю его как дочерний элемент виджета SafeArea, чтобы приложение учитывало выемки на современных смартфонах.